Wie wickeln Sie eine Liste als top-level element im JSON-Format generiert, die von Jackson
Habe ich ein problem, bei dem ich versucht bin, um eine Liste der root-Knoten, aber ich kann nicht scheinen, um in der Lage sein, diese zu bekommen. Lassen Sie mich erklären. Sagen wir, wir haben eine Klasse "TestClass"
class TestClass{
String propertyA;
}
Nun, einige utility-Methode dies ist, was ich tun
String utilityMethod(){
List<TestClass> list = someService.getList();
new ObjectMapper().writeValueAsString(list);
}
Den Ausgang bin ich versucht, zu JSON ist
{"ListOfTestClasses":[{"propertyA":"propertyAValue"},{"propertyA":"someOtherPropertyValue"}]}
Habe ich versucht,
objMapper.getSerializationConfig().set(Feature.WRAP_ROOT_VALUE, true);
Aber, ich weiß immer noch nicht scheinen, um es richtig zu machen.
Gerade jetzt, ich bin nur die Schaffung eines Map < String,TestClass > und ich Schreibe, dass zu erreichen, was ich versuche zu tun, was funktioniert, aber klar ist das ein hack. Könnte mir bitte jemand helfen mit eine elegantere Lösung? Dank
InformationsquelleAutor Seagull | 2013-04-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider auch mit der
WRAP_ROOT_VALUE
Funktion aktiviert ist, müssen Sie noch zusätzliche Logik für die Steuerung der root-name generiert, wenn serialisieren eines Java-collection (siehe diese Antwort für details, warum). Die Blätter, die Sie mit den Optionen:ObjectWriter
Hier ist etwas code zur Veranschaulichung der drei verschiedenen Optionen:
Ausgabe:
Mit einem
ObjectWriter
ist sehr bequem - nur im Hinterkopf kahl, dass alle top-level-Objekte serialisiert mit es wird die gleiche root-name. Wenn das nicht erwünscht, dann verwenden Sie eine Karte oder eine Halter-Klasse statt.InformationsquelleAutor Perception
Ich würde erwarten, dass die grundlegende Idee, so etwas wie:
Es ist sehr ähnlich zu der "Karte" - Lösung, die ich bin derzeit mit.
InformationsquelleAutor searlea