Jackson füllt nicht alle Eigenschaften

8

Ich arbeite an einem einfachen Beispiel mit Jackson library , um eine json string zurück in Java object zu konvertieren, aber ich sehe, dass nur wenige Eigenschaften auf meinem Java-Objekt statt aller Eigenschaften gesetzt werden.

Hier ist mein Code:

%Vor%

Das Sample.java-Programm sieht so aus:

%Vor%

Die Eingabe von json in meiner Datei lautet:

%Vor%

Die Ausgabe dieses Programms ist:

%Vor%

Gemäß meinem Programm sollten prop1 und prop3 nicht null sein. Ich weiß nicht, wo ich Fehler gemacht habe.

Aktualisierung:

Wenn ich die @JsonProperty Annotation entferne, bekomme ich die Ausnahme als:

%Vor%

Dies ist meine pom.xml Dateiabhängigkeiten:

%Vor%     
user3181365 22.07.2015, 10:29
quelle

1 Antwort

7

Sie haben in Ihrem Kommentar gesagt, dass Sie Jackson in der Version "2.5.4" verwenden, aber Sie importieren die Klasse ObjectMapper aus dem Paket org.codehaus . Dies bedeutet, dass diese Klasse aus der Version 1.9.13 (oder aus einer älteren Version) stammt.

Ich kann dein Problem reproduzieren, wenn ich die Versionen mit ObjectMapper und JsonIgnoreProperties von Version 1.9.13 ( org.codehaus ) und JsonProperty von Version 2.6.0 ( com.fasterxml ) mische.

Ausgabe:

  

Beispiel [prop1 = null, prop2 = 2, prop3 = null, prop4 = 4]

Wenn ich nur Version 1.9.13 oder 2.6.0 verwende, ist das Ergebnis ok:

  

Beispiel [prop1 = 1, prop2 = 2, prop3 = 3, prop4 = 4]

(für beide)

Ich empfehle also, dass Sie die verwendeten Bibliotheken nicht mischen und ich empfehle, die neueste Version zu verwenden, die von FasterXML . Aber die verwendete Version liegt bei Ihnen.

Sie können die JAR-Datei von hier herunterladen:

Btw über deinen Kommentar:

  

@OldCurmudgeon, Danke für die Antwort. Wenn Sie die Felder in "public" ändern, wurde das Problem nicht behoben. Ich habe die @ JsonProperty Annotation entfernt und dann die Setter-Methoden in setProp_1 & amp; setProp_3, es hat funktioniert. Bedeutet dies, dass es ein Problem mit der @ JsonProperty Annotation gibt?

Ja, Sie haben (oder hatten hoffentlich: P) ein Problem mit dieser Anmerkung: Es war von einer anderen Jackson-Version.

Über Ihre Bearbeitung:

Der Link zur Jackson-Bibliothek von fasterXML im Maven-Repository hat einen großen Vorteil: Er zeigt Ihnen, welche lib Sie herunterladen sollten, um mit Jackson in Ihrem Projekt zu arbeiten.

Sie brauchen:

Tom 22.07.2015, 17:25
quelle

Tags und Links