2016-01-05 11 views
5

Ho creato un file Json in cui volevo scrivere oggetto java di scrittura come elemento Array. Sto usando Jackson.Come scrivere JSON Array su file utilizzando jackson

try{ 
      String json; 
      String phyPath = request.getSession().getServletContext().getRealPath("/"); 
      String filepath = phyPath + "resources/" + "data.json"; 
      File file = new File(filepath); 
      if (!file.exists()) { 
       System.out.println("pai nai"); 
       file.createNewFile();    
      } 
      json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(story); 
      Files.write(new File(filepath).toPath(), Arrays.asList(json), StandardOpenOption.APPEND);  
    } 

Questo non è esattamente quello che voglio .it crea dati come

{ 
    "storyTitle" : "ttt", 
    "storyBody" : "tttt", 
    "storyAuthor" : "tttt" 
} 
{ 
    "storyTitle" : "a", 
    "storyBody" : "a", 
    "storyAuthor" : "a" 
} 

Ho solo bisogno di creare un array di JSON in cui aggiungo oggetto Java, i dati dovrebbero essere come questo

[{ 
    "storyTitle" : "ttt", 
    "storyBody" : "tttt", 
    "storyAuthor" : "tttt" 
} 
,{ 
    "storyTitle" : "a", 
    "storyBody" : "a", 
    "storyAuthor" : "a" 
}] 
+0

suggerimento non correlato: non è necessario creare il file se non esiste. Basta scrivere ad esso. – Henry

+0

'writeValueAsString (story);' puoi mostrare il codice che definisce cosa 'story' è? – PDStat

+0

Ho ottenuto il metodo di scrittura che ho scritto come Array – Sayem

risposta

4

Jackson fornisce metodi incorporati per scrivere dati JSON su file JSON. è possibile utilizzare questo genere di linea di codice per questo

ObjectMapper mapper = new ObjectMapper(); 
ObjectWriter writer = mapper.writer(new DefaultPrettyPrinter()); 
writer.writeValue(new File("D:/cp/dataTwo.json"), jsonDataObject); 
//new file(path of your file) 

e jsonDataObject è l'oggetto reale (cioè oggetto o array) che si desidera scrivere nel file.

+1

Ho provato questo a sovrascrivere i dati precedenti ogni volta che ho creato nuovi dati. Ho bisogno di aggiungere dati come elemen di array Json. – Sayem

+0

anyidea come pubblicare la quantità di valore scritto utilizzando jackson? –

Problemi correlati