2017-03-27 3 views
0

EDIT:Frühling Boot: JSON Deserialisierung funktioniert nicht für Getter/Setter

Ich habe eine einfache ObjectMapper und gesagt, dass es die json auf das Objekt abzubilden. Es warf ein Fehler von jackson

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException deserialisieren: Unbekanntes Feld

, dass die Anwendung scheinbar schluckt und dann weiter auf. Ich weiß, dass ich feststellen muss, warum meine Feldnamen alle in Kleinbuchstaben geschrieben werden.

END EDIT

Ich bin mit Frühling Stiefeln, und ich sende ein Objekt über den Draht im JSON-Format von einer Remote-Anwendung. Ich überprüfe das "Paket", ich sehe, dass alle Objekte NULL haben, wo ihre Daten sein sollten. Die Felder sind alle privat, aber über Getter und Setter zugänglich.

Ich habe versucht, ein dummy DTO-Objekt zu erstellen und das Senden. Dort sah ich, dass die Deserialisierung ordnungsgemäß funktionierte und die Felder richtig gesetzt wurden, wenn alle Accessoren als privat gekennzeichnet waren.

Wie befehle ich Jackson in Spring Boot, den entsprechenden Getter des Feldes zu finden und damit die Eigenschaft zu setzen?

Jede Hilfe wird sehr geschätzt.

Unten ist ein Bild des Objekts, das ich senden möchte, sowie des Dummy-DTO-Objekts. enter image description here

enter image description here

Hier ist die Spitze meines Ruhe-Controller und die Methode, die aufgerufen werden wird.

enter image description here

Und schließlich, hier ein Ausschnitt aus der lästigen Klasse, die nicht serialisiert wird, es ist die @Entity Vielfalt.

enter image description here

+2

Das hatte ich noch nie außerhalb der Box. Können Sie etwas Code bereitstellen? – CollinD

+0

@CollinD Ich habe ein paar Fotos von den Klassen hinzugefügt, hoffe das hilft. –

+1

Als zukünftige Referenz sollten Sie niemals Screenshots Ihres Codes veröffentlichen, wenn Sie einfach kopieren und einfügen können. Geh und lies [mcve]. – CollinD

Antwort

1

Der Grund, es versagte war zweifach. Erstens hatte ich Eigenschaften auf der Senderseite, die dem Deserialisierungszielobjekt auf der Java-Seite nicht zugeordnet waren. Zweitens, wenn der JSON-Converter von NewtonSofts das Zeug konvertiert, macht er die folgende Umwandlung "String Name => String name". Dies führte zu einem weiteren Fehler, bei dem der Jackson Converter keine der Zielwerte in der JSON-Zeichenfolge finden konnte.

Die Lösung wurde auf meine application.properties mit diesen Werten Datei ändern:

spring.jackson.deserialization.fail-on-unknown-Eigenschaften = false spring.jackson.mapper.accept_case_insensitive_properties = true

Verwandte Themen