Ich habe mir Jackson angesehen, aber anscheinend müsste ich die Map in JSON und dann den resultierenden JSON in POJO konvertieren.
Gibt es eine Möglichkeit, eine Karte direkt in ein POJO umzuwandeln?
json
dictionary
jackson
pojo
user86834
quelle
quelle
compile 'com.fasterxml.jackson.core:jackson-databind:2.7.3'
Map<String, Object>
Instanz konvertieren können ?Eine Lösung mit Gson :
quelle
map.toString()
nach die richtige Zeichenfolge bereitgestellt ? Eine Implementierung vontoString()
garantiert kein bestimmtes Format.Ja, es ist definitiv möglich, die Zwischenkonvertierung in JSON zu vermeiden. Mit einem Deep-Copy-Tool wie Dozer können Sie die Karte direkt in ein POJO konvertieren. Hier ist ein vereinfachtes Beispiel:
Beispiel POJO:
Beispiel für einen Konvertierungscode:
Ausgabe:
Hinweis: Wenn Sie Ihre Quellzuordnung in a ändern
Map<String, Object>
, können Sie beliebig tief verschachtelte Eigenschaften kopieren (wobeiMap<String, String>
Sie nur eine Ebene erhalten).quelle
Wenn Sie generische Typen in Ihrer Klasse haben, sollten Sie
TypeReference
mit verwendenconvertValue()
.Sie können das auch verwenden, um ein Pojo in
java.util.Map
Back umzuwandeln .quelle
Ich habe sowohl Jackson als auch BeanUtils getestet und festgestellt, dass BeanUtils viel schneller ist.
Auf meinem Computer (Windows8.1, JDK1.7) habe ich dieses Ergebnis erhalten.
quelle
Map
enthältmap.put("data","2016-06-26")
undTestClass
hat ein Feldprivate LocalDate data;
, dann wäre Jackson in der Lage, Dinge zu erledigen, während BeanUtils fehlschlagen wird.ObjectMapper
Instanz ein zeit- und ressourcenintensiver Prozess ist, und es wird empfohlen, eine Mapper-Instanz erneut zu verwenden, anstatt sie jedes Mal neu zu erstellen. Ich denke, es wäre besser, es aus dem Test-LopDie Antworten, die Jackson bisher gegeben hat, sind so gut, aber Sie könnten trotzdem eine Util- Funktion haben, die Ihnen hilft verschiedene
POJO
s wie folgt konvertieren können :quelle
User.class POJO
Die App.class testet das Beispiel
quelle
@Hamedz Wenn Sie viele Daten verwenden, verwenden Sie Jackson, um Lichtdaten zu konvertieren, verwenden Sie Apache ... TestCase:
quelle