私はJavaでjson-simpleライブラリーを使用するのが初めてで、encodingとdecodingサンプルの両方を使っています。エンコーディングの例を複製しても問題ありませんでしたが、デコードされたサンプルを混合型JSONで処理することはできませんでした。JavaでJSONストリングをデコードする
私の問題の1つは、適切に文書化されておらず、ソースを持っていないライブラリがたくさんあることです(その目的を読んで理解するためです)。したがって、私はこれらのクラスを多く使う方法を理解するのに苦労しています。
この例で読んだ後:json-simple official decoding tutorialから
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);
}
を、私はこのJSONをデコードしてみました:
{
"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}
]
}
}
私は、デコードするために、次のコードを書いています:
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);
しかし、それは動作しません。実際には、変更されていないサンプルも動作させることができず、元の作者はコードを説明していませんでした。
示されているようにこのJSONをデコードする最も簡単な方法は何ですか?
statをデコードするコードを確認できますか? –
[JSON公式解読チュートリアル](https://code.google.com/p/json-simple/wiki/DecodingExamples)の例5(停止可能なSAXライクなコンテンツハンドラ)で確認しました コードは単一辞書(マップ)/配列を対象としています。しかし、あなたは地図で地図(複数の地図)でjsonを試しています。私が間違っていれば私を修正してください。 – ram2013
@ ram2013:ya ..私が解読する必要があるのはマップの地図です...そして、私はこれがそれらの一つだと思います。私が "stat"の値を得たかのように、私はそれをさらにJSONのデコードに使うことができます。 –