分享错误,学习生活

JSONObject解析 键为空

问题描述: 有如下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下的包有所不同

  1. JSONObject obj = JSONObject.fromObject();
  2. JSONArray obj2 = obj.getJSONArray();
  3. for (int i = 0; i < obj2.size(); i++) {
  4. JSONObject temp = JSONObject.fromObject(obj2.getString(i));
  5. System.out.println( + temp.getString());
  6. System.out.println( + temp.getString());
  7. }

以上代码在name和url都存在的时候不会报错,但是如果缺失其中一个就会报错

net.sf.json.JSONException: JSONObject[] not found.

解决方法:

temp.optString(); 如果没有url,则返回;

temp.optString(,); 如果没有url,则返回defaultValue;

暂无评论

发表评论

电子邮件地址不会被公开。