JSONObject解析键为空

xiaoxiao2021-02-28  17

问题描述: 有如下json,如果 其中一个没有‘url’标签,但是我们还想要解析并让它的值为null

{   "lists": {     "site": [       {         "id": "1",         "name": "Alibaba",         "url": "www.alibaba.com"       },       {         "id": "2",         "name": "baidu",         "url": "www.baidu.com" --如果没有此键值对       }     ]   } }

我用的是net.sf.json.JSONObject  解析方法和apache下的包有所不同

JSONObject obj = JSONObject.fromObject("要解析的json字符串"); JSONArray obj2 = obj.getJSONArray("site"); for (int i = 0; i < obj2.size(); i++) { JSONObject temp = JSONObject.fromObject(obj2.getString(i)); System.out.println("name:" + temp.getString("name")); System.out.println("url:" + temp.getString("url")); }以上代码在name和url都存在的时候不会报错,但是如果缺失其中一个就会报错

net.sf.json.JSONException: JSONObject["url"] not found.解决方法: temp.optString("url"); 如果没有url,则返回""; temp.optString("url","defaultValue"); 如果没有url,则返回defaultValue;

转载请注明原文地址: https://www.6miu.com/read-2150204.html

最新回复(0)