Voglio generare una stringa JSON nella seguente struttura usando l'API Jackson (JsonFactory, JsonGenerator). Come posso farlo ?Come si può scrivere JSON raw attraverso JsonGenerator di Jackson?
attesi:
{
"api": {
"Salutaion": "Mr",
"name": "X"
},
"additional": {
"Hello",
"World"
}
}
attuale:
{
"api": "{
\"Salutaion\": \"Mr\",
\"name\": \"X\"
}",
"additional": "{
\"Hello\",
\"World\"
}"
}
I valori degli attributi api & supplementari saranno disponibili per me come stringa. Dovrei usare writeObjectField (come segue)?
jGenerator.writeObjectField("api", apiString);
Dopo la creazione dell'oggetto jGenerator, come faccio a ottenere rappresentazione String finale costruito JSON di oggetto?
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
JsonGenerator jGenerator = jfactory.createJsonGenerator(outputStream);
jGenerator.writeStartObject();
jGenerator.writeObjectField("api", apiString);
jGenerator.writeObjectField("additional", additionalString);
jGenerator.writeEndObject();
jGenerator.close();
outputStream.close();
outputStream.toString()
L'outputStream.toString() dà una stringa JSON, ma le doppie virgolette (") nel apiString sono sempre prefisso un carattere di escape \
E 'questo il modo giusto?
sì è giusto, a meno che non sia valido – meda
in realtà, apiString è una stringa JSON. Dovrei usare writeTree() per assicurarmi di ottenere la stringa finale come mostrato nella domanda? – yathirigan
Non capisco. Cos'è 'apiString'? È un 'String' che contiene contenuti JSON? –