Jackson-JSON-Bibliothek-Mapper String
Habe ich eine Klasse (A
und B
sind meine Objekte)
public A {
private List<B> b;
private int c;
}
Habe ich eine String-variable temp. Also ich würde sparen Sie in diese variable den JSON-String von meinem Objekt. Wie?
Habe ich versucht, mit dieser Methode 2, aber ohne Ergebnis.
public void save() {
ObjectMapper mapper = new ObjectMapper();
String temp = mapper.writeValueAsString(a);
}
public void read(String temp) {
ObjectMapper mapper = new ObjectMapper();
A a = mapper.readValue(temp, A.class);
}
Wie kann ich es lösen?
- "Ohne Ergebnis", was bedeutet... ? Ich vermute, dass alles, was Sie brauchen, ist zum hinzufügen
@JsonProperty
Anmerkungen neben privaten Felder (Jackson folgt Bean-Konvention, und die privaten Felder werden ignoriert, nur die öffentlichen Felder serialisiert standardmäßig).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte der code übergeben Sie eine Instanz von Typ
A
zu denwriteValueAsString
Methode nicht die tatsächliche Klasse.Den
ObjectMapper
wird in der Lage sein, um zu bestimmen, die Instanz mit dem Typ per reflection, aber wenn Sie don ' T-pass-eine Instanz, die es kann nicht bestimmen den Wert des Feldes ist in den generierten JSON.Auch sicher sein, zu fangen oder zu werfen, die entsprechenden Ausnahmen.
Sollten Sie auch acessors für die Felder in der Klasse
A
und KlasseB
. BEMERKEN ichB
im vorherigen Satz, da Jackson muss in der Lage sein, um anzeigen alle Felder, die auf die Instanz, die wir es.Hier ein komplettes lauffähiges Beispiel, das ich getestet habe.
Wenn dieses einfache Beispiel funktioniert nicht, die
jackson-mapper-asl.jar
- Datei ist wahrscheinlich nicht auf dem build-Pfad. Laden Sie die Datei von hier und legen Sie Sie irgendwo auf Ihrer lokalen Maschine.Weiter über Eclipse mit der Rechten Maustaste auf Ihr Projekt und wählen Sie Eigenschaften.
Wählen Sie dann Build Path > Bibliotheken > Add External Jars. Suchen Sie die Glas und drücken Sie dann OK.