Voglio usare jackson per convertire un ArrayList in un JsonArray.Jackson - il modo migliore scrive un elenco java su un array json
Event.java: questa è la classe java bean con due campi "campo1", "campo2" mappati come JsonProperty.
Il mio obiettivo è:
Convert
ArrayList<Event> list = new ArrayList<Event>();
list.add(new Event("a1","a2"));
list.add(new Event("b1","b2"));
Per
[
{"field1":"a1", "field":"a2"},
{"field1":"b1", "field":"b2"}
]
Il modo in cui mi viene in mente è: writeListToJsonArray():
public void writeListToJsonArray() throws IOException {
ArrayList<Event> list = new ArrayList<Event>();
list.add(new Event("a1","a2"));
list.add(new Event("b1","b2"));
OutputStream out = new ByteArrayOutputStream();
JsonFactory jfactory = new JsonFactory();
JsonGenerator jGenerator = jfactory.createJsonGenerator(out, JsonEncoding.UTF8);
ObjectMapper mapper = new ObjectMapper();
jGenerator.writeStartArray(); // [
for (Event event : list) {
String e = mapper.writeValueAsString(event);
jGenerator.writeRaw(usage);
// here, big hassles to write a comma to separate json objects, when the last object in the list is reached, no comma
}
jGenerator.writeEndArray(); // ]
jGenerator.close();
System.out.println(out.toString());
}
Sto cercando qualcosa di simile:
generator.write(out, list)
questo convertire direttamente la lista di formato di array JSON e poi scrivere a OutputStream "out".
ancora più avido:
generator.write(out, list1)
generator.write(out, list2)
questo sarà solo convertire/aggiungere nella Lista1, Lista2 in un singolo array JSON. quindi scriverlo su "out"
Hai provato 'mapper.writeValueAsString (list)'? O 'mapper.writeValue (out, list)'. –
sì, alla fine mapper.writeValueAsString (lista) fa il trucco, ma il mio caso vuole scrivere più elenchi in un unico JsonArray. Qualche idea? – Shengjie
Se ho capito bene, puoi creare un nuovo elenco e aggiungere tutti gli elenchi a uno nuovo e convertirlo è quello di JSON. –