使用 json-simple 库解码 Java 中的 JSON 字符串
2022-09-02 12:13:54
						我是在Java中使用json-simple库的新手,并且我已经经历了编码和解码示例。复制编码示例很好,但我无法让解码示例与混合类型JSON一起使用。
我的一个问题是,库中有太多的类没有正确记录,而且我没有源代码(以便能够通读和理解它们的用途)。因此,我正在努力理解如何使用这些类中的很多。
阅读此示例后:
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-simple官方解码教程中,我试图解码这个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 的最简单方法是什么?
 
					 
				 
				    		 
				    		 
				    		 
				    		