Java 使用JSON智能读取JSON文件
我试图将JSON文件中的值读取到数组中,以便进一步处理。我正在使用JSON Smart 1.2.0库实现同样的功能。由于一些限制,我不能使用2.0版本 我得到以下例外情况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内容的正确方法吗 下面是
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);
}