JSON数组显然是null,但它不应该是

时间:2018-03-26 23:06:07

标签: java arrays json parsing

编辑:我正在解析错误的文件!我收到错误是因为我将文件视为一个数组,但这是错误的文件

我需要解析一个只有一个整数组的JSON文件。我想访问“data”数组中的“text”。

JSON文件:

[
  {
    "id": "12243",
    "data": [
      {
        "text": "testing",
        "userDefined": false
      }
    ],
    "countCheck": false,
    "count": 0
  }
]

Java代码:

JSONObject object = (JSONObject) parser.parse(new InputStreamReader(new FileInputStream(files[i])));
org.json.simple.JSONArray data = (org.json.simple.JSONArray)object.get("data");

这编译并运行但“数据”显然是空的,我不明白为什么。此外,object不为null。

1 个答案:

答案 0 :(得分:1)

JSON的顶级是一个数组,而不是一个对象,因此将parse()的输出强制转换为JSONObject是错误的。将其转换为JSONArray,然后访问索引0处的JSONObject,然后获取该对象的"data"字段:

JSONArray arr = (JSONArray) parser.parse(new InputStreamReader(new FileInputStream(files[i])));
JSONObject object = (JSONObject) arr.get(0);
JSONArray data = (JSONArray) object.get("data");

然后您可以根据需要迭代data数组中的对象:

for (int i = 0; i < data.size(); i++)
{
    JSONObject obj = (JSONObject) data.get(i);
    String text = obj.get("text");
    //...
}

for (JSONObject obj : data)
{
    String text = obj.get("text");
    //...
}

等等...