问题描述: 有如下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;