Warum nicht Ihr JSON-Dokument in ein Array zu drehen, da:
{"persons":[{"name":"Alice"},{"name":"Bob"}]}
dann ein entsprechendes JSON Schema definieren (PersonArray
Annahme, daß der Dateiname):
{
"$schema": "http://json-schema.org/draft-04/schema#",
"description": "Some description",
"type" : "object",
"properties" : {
"persons" : {
"type" : "array",
"items" : { "$ref": "#/definitions/person" }
}
},
"definitions": {
"person" : {
"type": "object",
"description": "A person",
"properties": {
"name": { "type": "string" }
}
}
}
}
und nutzen Sie die Jackson Data Binding API, indem Sie das Maven Plugin jsonschema2pojo-maven-plugin
verwenden, um POJOs in Java zu generieren (alternativ können Sie POJOs manuell implementieren).
Sobald POJOs generiert werden, können Sie ObjectMapper verwenden JSON-Dokument in folgender Weise deserialise:
List<Person> persons = new ArrayList<Person>();
:
ObjectMapper mapper = new ObjectMapper();
PersonArray personArray = mapper.readValue(serialisedJsonDocument, PersonArray.class);
Die Elemente Ihrer JSON Dokument wird innerhalb PersonArray
Objekt als gespeichert werden Sie könnten dem Objekt Person
zusätzliche Eigenschaften hinzufügen, wenn Sie es benötigen.
Gibt es eine Möglichkeit, dieses Verhalten als globale Konfiguration festzulegen? Ich benutze es im Frühjahr Web-MVC-Projekt, ich möchte diesen Deserialize-Code nicht überall schreiben. – sun
Ja, siehe Abschnitt: "Erstellen Sie einen benutzerdefinierten ObjectMapper, indem Sie den Standard Jackson ObjectMapper erweitern. ": http://magicmonster.com/kb/prg/java/spring/webmvc/jackson_custom.html –