我正在尝试使用以下格式解析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和数组是可选字段....有时它存在..其他不是..
我认为这样可行..除了我看到上面的代码块中的注释所指示的nullpointer错误..
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 }
答案 0 :(得分:4)
JSONObject
from simple json
implements a Map
,您可以在使用之前检查get
的返回值是否为null
。
但是,这也是API的限制。您无法判断null
是来自JSON,还是来自get(String)
缺少JSON值。
As JB Nizet stated in the comments,您可以使用containsKey(Object)
进行区分。