使用json-smart读取JSON文件

时间:2014-06-12 13:03:43

标签: java json

我正在尝试将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"
      }
    ]
  }
]

1 个答案:

答案 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)