编辑:我正在解析错误的文件!我收到错误是因为我将文件视为一个数组,但这是错误的文件
我需要解析一个只有一个整数组的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。
答案 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");
//...
}
等等...