Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JSON智能读取JSON文件_Java_Json - Fatal编程技术网

Java 使用JSON智能读取JSON文件

Java 使用JSON智能读取JSON文件,java,json,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内容的正确方法吗 下面是

我试图将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包含一个数组,该数组只有一个object元素,因此您应该像这样解析它:

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);
}
JSONArray root=(JSONArray)JSONValue.parseWithException(json);
JSONObject rootObj=(JSONObject)root.get(0);
JSONArray数组=(JSONArray)rootObj.get(“朋友”);
对于(int i=0;i

如果它可以有更多的元素来添加一个for循环,而不是
root.get(0)

那么有可能没有名为“friends”的root的json文件呢?是的,你可以有这样一个json:
[{id:0,name:“test1”},{id:1,“name:“test2”}]
在这种情况下,你可以离开第2行和第3行并在根目录中进行迭代。我明白了。再次感谢。
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);
}