Ich habe eine Map & lt; String, Object & gt; enthält eine deserialisierte Form von JSON. Ich möchte dies in die Felder eines POJO deserialisieren.
Ich kann dies mit Gson durchführen, indem ich die Map in eine JSON-Zeichenfolge serialisieren und dann die JSON-Zeichenfolge in das POJO deserialisieren, aber das ist ineffizient (siehe Beispiel unten). Wie kann ich dies ohne den mittleren Schritt durchführen?
Die Lösung sollte vorzugsweise entweder Gson oder Jackson verwenden, da sie bereits im Projekt verwendet werden.
Beispielcode:
%Vor% Mit Gson können Sie Ihre Map in ein JsonElement
umwandeln, das Sie dann mit fromJson
:
Dies ist ähnlich der toJson
-Methode, die Sie bereits verwenden, außer dass Sie vermeiden, die JSON-String-Repräsentation zu schreiben und diese JSON-String dann in ein JsonElement zurück zu analysieren, bevor Sie es in Ihre Klasse konvertieren.
In Jackson
können Sie convertValue Methode. Siehe folgendes Beispiel:
Sie können MyPojo direkt erstellen, indem Sie ihm die Karte geben. Etwas wie
%Vor%Und einen entsprechenden Konstruktor deklarieren:
%Vor%Sie können die jackson-Bibliothek zum Umwandeln des Kartenobjekts verwenden, um POJO zu steuern.
%Vor%Tags und Links java serialization jackson gson