Mai mult
Converti JsonNode în POJO
Acest lucru poate părea un pic neobisnuit, dar eu sunt în căutarea pentru o modalitate eficientă de a transforma/hartă o JsonNode "într-un" POJO
.
Am un magazin al meu, Model's informații în fișiere json și eu trebuie să suport un cuplu de versiunea de modelul meu.
Ce vreau să faceți este să încărcați fișierul json în memorie într-un JsonNode, se aplică un cuplu de versionare strategii pentru a se potrivi cu cea mai recentă versiune de Modelul meu.
ObjectMapper mapper = new ObjectMapper();
BufferedReader fileReader = new BufferedReader(new FileReader(projPath));
JsonNode rootNode = mapper.readTree(fileReader);
//Upgrade our file in memory
applyVersioningStrategy(rootNode);
ProjectModel project = mapJsonNodeToProject(rootNode);
Dacă nu's-un mod mai rapid de a face, probabil voi sfârși pur și simplu manual de aplicarea `JsonNodes la Modelul meu
132
4
În Jackson 2.4, puteți converti, după cum urmează:
unde jsonObjectMapper
este un Jackson
ObjectMapper`.În versiunile mai vechi de Jackson, ar fi
Acest lucru ar trebui să facă truc:
Spun ar trebui, pentru că m-am'm, folosind asta cu
String
, nuBufferedReader
dar ar trebui să funcționeze în continuare.Aici's codul meu:
Aici's documentația oficială pentru acest apel: http://jackson.codehaus.org/1.7.9/javadoc/org/codehaus/jackson/map/ObjectMapper.html#readValue(java.lang.String, java.lang.Class)
Puteți defini, de asemenea, un obicei deserializer când instantia
ObjectMapper
: http://wiki.fasterxml.com/JacksonHowToCustomDeserializersEdit: Tocmai mi-am amintit ceva. Dacă obiectul vin are mai multe proprietăți decât POJO` a și vrei doar să ignore extra'll doriți să setați acest lucru:
Sau'll obține o eroare care se poate't găsi de proprietate de a pune în.
Daca're folosind org.codehaus.jackson, acest lucru a fost posibil deoarece 1.6. Puteți converti un JsonNode la un POJO cu ObjectMapper#readValue: http://jackson.codehaus.org/1.9.4/javadoc/org/codehaus/jackson/map/ObjectMapper.html#readValue(org.codehaus.jackson.JsonNode, java.lang.Class)
Dacă JSON de intrare are mai multe proprietăți decât POJO-a și vrei doar să ignore extras din Jackson 2.4, puteți configura ObjectMapper după cum urmează. Această sintaxă este diferit de vârstă Jackson versiuni. (Dacă utilizați sintaxa greșită, se va face în tăcere nimic.)