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:
Dies ist meine pom.xml Dateiabhängigkeiten:
%Vor% 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
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:
ObjectMapper
-Klasse)