java - 处理json中的可选字段

标签 java json

我正在尝试解析具有以下格式的 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 }

最佳答案

JSONObject from simple json implements a Map ,你可以在使用它之前检查 get 的返回值不为 null

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

As JB Nizet stated in the comments , 你可以使用 containsKey(Object)做出这种区分。

关于java - 处理json中的可选字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19325382/

相关文章:

java - 如何从 Android 中 XML 中定义的字符串数组中获取对单个元素的引用

java - 我需要将映射放入 hibernate 配置中吗

javascript - 如何包含来自另一个 php 文件的 php 验证函数

mysql - 如何从 MySQL 中提取 JSON 数组

ajax - 通过 AJAX 发送大型 JSON 时获取 No 'Access-Control-Allow-Origin'

Java并发查询

java - 为struts radio的 "disabled"参数设置一个动态值

java - 我可以从 Flash 影片中调用 Java 类方法吗?

javascript - $.getJSON() 方法无法识别维基百科 API JSON

android - 在 Android 中的 Activity 之间传递数据(大 JSON 数据字符串)