我正在尝试将JSON文件中的值读取到数组以进行进一步处理。我正在使用JSON-Smart 1.2.0库。由于一些限制,我不能使用2.0版本。
我收到以下异常。
java.lang.ClassCastException: net.minidev.json.JSONArray cannot be cast to net.minidev.json.JSONObject
我甚至尝试使用JSONArray而不是JSONObject。我在这里做错了什么?这是阅读json内容的正确方法吗?
以下是java代码。
JSONObject json = (JSONObject) JSONValue.parseWithException(browsers);
JSONArray array = (JSONArray) json.get("friends");
for (int i = 0; i < array.size(); i++) {
JSONObject cap = (JSONObject) array.get(i);
String first = (String) cap.get("name");
System.out.println(first);
}
以下是json文件内容。
[
{
"friends": [
{
"id": 0,
"name": "test1"
},
{
"id": 1,
"name": "test2"
}
]
}
]
答案 0 :(得分:2)
您的JSON包含一个包含一个对象元素的数组,因此您应该像这样解析它:
JSONArray root = (JSONArray) JSONValue.parseWithException(json);
JSONObject rootObj = (JSONObject) root.get(0);
JSONArray array = (JSONArray) rootObj.get("friends");
for (int i = 0; i < array.size(); i++) {
JSONObject cap = (JSONObject) array.get(i);
String first = (String) cap.get("name");
System.out.println(first);
}
如果它可以包含更多元素,则添加for循环而不是root.get(0)
。