Ich bin neu in der Verwendung der json-Simple-Bibliothek in Java und habe sowohl die encoding als auch die decoding-Beispiele durchlaufen. Duplizieren der Codierungsbeispiele war in Ordnung, aber ich konnte die Decodierung nicht mit JSON vom gemischten Typ arbeiten.JSON-String in Java entschlüsseln
Eines meiner Probleme ist, dass es zu viele Klassen in der Bibliothek gibt, die nicht richtig dokumentiert sind und für die ich nicht die Quelle habe (um ihren Zweck lesen und verstehen zu können). Folglich habe ich Schwierigkeiten zu verstehen, wie man viele dieser Klassen benutzt.
Nach der Lektüre dieses Beispiel:
String jsonText = "{\"first\": 123, \"second\": [4, 5, 6], \"third\": 789}";
JSONParser parser = new JSONParser();
ContainerFactory containerFactory = new ContainerFactory(){
public List creatArrayContainer() {
return new LinkedList();
}
public Map createObjectContainer() {
return new LinkedHashMap();
}
};
try {
Map json = (Map)parser.parse(jsonText, containerFactory);
Iterator iter = json.entrySet().iterator();
System.out.println("==iterate result==");
while(iter.hasNext()) {
Map.Entry entry = (Map.Entry)iter.next();
System.out.println(entry.getKey() + "=>" + entry.getValue());
}
System.out.println("==toJSONString()==");
System.out.println(JSONValue.toJSONString(json));
} catch(ParseException pe) {
System.out.println(pe);
}
vom json-simple official decoding tutorial habe ich versucht, diese JSON zu entschlüsseln:
{
"stat":{
"sdr": "MAC address of FLYPORT",
"rcv": "ff:ff:ff:ff:ff:ff",
"time": "0000000000000",
"type": 0,
"subt": 0,
"argv": [
{"type": "6","val": "NetbiosName"},
{"type": "6","val": "MACaddrFlyport"},
{"type": "6","val": "FlyportModel"},
{"type": "1","val": id}
]
}
}
Ich schreibe Code folgt zu entschlüsseln:
String jsonString = "{\"stat\":{\"sdr\": \"aa:bb:cc:dd:ee:ff\",\"rcv\": \"aa:bb:cc:dd:ee:ff\",\"time\": \"UTC in millis\",\"type\": 1,\"subt\": 1,\"argv\": [{1,2},{2,3}]}}";
JSONObject jsonObject = new JSONObject(jsonString);
JSONObject newJSON = jsonObject.getJSONObject("stat");
System.out.println(newJSON);
Aber es funktioniert nicht. Tatsächlich konnte ich das unmodifizierte Beispiel auch nicht ausführen, und die ursprünglichen Autoren haben ihren Code nicht erklärt.
Was ist der einfachste Weg, diesen JSON wie gezeigt zu dekodieren?
Können wir Ihren Code zum Entschlüsseln eines Stat sehen? –
Haben Sie in [JSON-Tutorial für offizielle Dekodierung] (https://code.google.com/p/json-simple/wiki/DecodingExamples) unter Beispiel 5 (Stoppable SAX-ähnlicher Inhaltshandler) nachgesehen. Wie ich das sehen kann Der Code ist für einzelnes Wörterbuch (Map)/Array vorgesehen. Aber Sie versuchen für den JSON mit Karten in einer Karte (mehrere Karten). Wenn ich falsch liege, korrigiere mich. – ram2013
@ ram2013: ya .. mein was ich entschlüsseln muss ist Karten in Karten ... und ich denke, das ist einer von ihnen. als ob ich den Wert für "stat" bekomme kann ich es für weitere JSON Decodierung verwenden. –