1

我正在尝试使用以下格式解析 json

JSONObject json;
        try {
            json = (JSONObject)parser.parse(value.toString());

            String foo = (String) json.get("foo").toString();//error here
            String id1 = (String) json.get("_id");

            JSONArray array = (JSONArray)json.get("bar");
            } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

现在,问题是 ...foo 和数组是可选字段 .... 有时它存在.. 其他时候不存在..

我认为这会起作用..除了我看到上面代码块中的注释指示的空指针错误..

Error:
java.lang.NullPointerException
    at org.hadoop.Foo$MapClass.map(Foo.java:48)

任何示例 json

{ "_id" : "foobar", "foo" : null }
{ "_id" : "foobar", "foo" : null , "bar":[{"id":1}]}
{ "_id" : "foobar"}
{ "_id" : "foobar", "foo" : 23 }
4

1 回答 1

4

JSONObjectsimple json实现 aMap ,您可以在使用它之前检查它的返回值get是否不是。null

但是,这也是 API 的限制。您无法判断是null源自 JSON 还是源自缺少 JSON 值get(String)

正如 JB Nizet 在评论中所说,您可以使用containsKey(Object)它来区分。

于 2013-10-11T19:06:09.300 回答