我有一个Iterator来从JSON格式生成对象。但不幸的是我得到了一个
ClassCastException:org.json.simple.JSONArray无法强制转换为Main.Test.main中的org.json.simple.JSONObject(Test.java:33)
我的测试课程如下:
public class Test {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
ArrayList al = new ArrayList();
try {
Object jsonData = parser.parse(new FileReader("C:\\Users\\b\\Desktop\\test.json"));
JSONObject jsonObject = (JSONObject) jsonData;
JSONIteratorAuthor itr = new JSONIteratorAuthor(jsonObject);
while(itr.hasNext()){
al.add(itr.next());
}
while(itr.hasNext()){
Object element = itr.next();
System.out.print(element + "");
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
catch (ParseException e) {
e.printStackTrace();
}
}
}
例外与此行有关:JSONObject jsonObject = (JSONObject) jsonData;
我真的不明白为什么它不起作用。我希望有一个人可以帮助我。 我使用json.simple库。
答案 0 :(得分:1)
您似乎将数据保存为org.json.simple.JSONArray类型。 尝试投射
JSONArray jsonObject = (JSONArray) jsonData;
而不是
JSONObject jsonObject = (JSONObject) jsonData;
答案 1 :(得分:1)
JSON object
和JSON array
都是JSON数据的有效根。没有办法查询json-simple解析器来自调用的数据类型
Object jsonData = parser.parse(data);
我猜你必须使用instanceof
检查你得到的类型,然后进行相应的转换。请注意,JSONArray
不会延伸JSONObject
,因此您无法在两者之间进行投射。