2017-02-15 1 views
-3

Unter der Annahme, dass ich die folgende JSON-String haben:Wie marschiere/entpacke ich JSON in einer Java-Anwendung?

 
{ 
    "1": { 
    "id": "12", 
    "name": "xyz" 
    }, 
    "2": { 
    "id": "12", 
    "name": "xyz" 
    }, 
    "3": { 
    "id": "12", 
    "name": "xyz" 
    }, 
    "4": { 
    "id": "12", 
    "name": "xyz" 
    }, 
    "5": { 
    "id": "12", 
    "name": "xyz" 
    }, 
    "6": { 
    "id": "12", 
    "name": "xyz" 
    } 
} 

Wie man über die Schaffung dieser JSON Struktur aus einer Java-Anwendung gehen würde? Gibt es irgendwelche guten Bibliotheken, um JSON für Java marshalen und entpacken zu können?

Antwort

0

Mit Bibliotheken wie jackson-core können Sie json einfach und effizient mit minimalem Code in eine Objektdarstellung und umgekehrt umwandeln.

Zum Beispiel die JSON Sie gezeigt, wäre eine seiner Map<String,SomeObject> wo SomeObject vertreten würde wie folgt aussehen:

public class SomeObject { 
    private String id; 
    private String name; 
} 

Die Karte würde ausgefüllt werden wie folgt, einen Konstruktor unter der Annahme, dass id und name für die Karte Eintrag nimmt Wert.

Map<String, SomeObject> map = new LinkedHashMap<>(); 
map.put("1", new SomeObject("12", "xyz")); 
map.put("2", new SomeObject("12", "xyz")); 
map.put("3", new SomeObject("12", "xyz")); 
map.put("4", new SomeObject("12", "xyz")); 
map.put("5", new SomeObject("12", "xyz")); 
map.put("6", new SomeObject("12", "xyz")); 

nun die JSON-String von Java erhalten:

String output = new ObjectMapper().writeValueAsString(map); 

Wenn Sie die JSON-String hatte und man wollte die Objektdarstellung erhalten:

ObjectMapper mapper = new ObjectMapper(); 
Map<String, SomeObject> map = new LinkedHashMap<>(); 
map = mapper.readValue(json, new TypeReference<Map<String,SomeObject>>(){}); 

Offensichtlich ist dies ein grundlegendes Überblick. Es wäre ratsam, die Dokumentation für die Jackson-API zu lesen, die auf ihrem Github here gehostet wird.

0

Ich würde eine andere Bibliothek empfehlen: fastjson. Es ist einfach, schneller und kleiner und vergleicht Jackson.

0

Es gibt mehrere populäre Bibliotheken: Jackson bereits erwähnt hier, Gson, org.json und andere.
Es gibt auch einige Convenience-Bibliotheken, die sich nicht mit der Serialisierung befassen, aber zum Analysieren nützlich sein können, zum Beispiel https://github.com/jayway/JsonPath. Es möglicherweise (nicht selbst getestet) kann ein bisschen langsamer, aber bequemer sein.
Wenn Sie nicht Tonnen von Json-Dokumenten pro Sekunde oder sehr große/comples Dokumente (oder beides) behandeln, können Sie wahrscheinlich eine Bibliothek auswählen, die für Sie einfach aussieht. Wenn Sie sich mit Fällen befassen, die ich erwähnt habe, müssen Sie einige Leistungstest-Ergebnisse in Google lesen oder, wenn möglich, Ihre eigenen laufen lassen.

Verwandte Themen