我有一个从JSON格式生成对象的Iterator。但不幸的是我得到了
ClassCastException:不能将org.json.simple.JSONArray转换为org.json.simple.JSONObject at Main.Test.main(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库。
发布于 2016-01-20 09:26:01
您似乎将数据保存为org.json.simple.JSONArray类型。试浇铸
JSONArray jsonObject = (JSONArray) jsonData;而不是
JSONObject jsonObject = (JSONObject) jsonData;发布于 2016-01-20 09:48:37
JSON object和JSON array都是JSON数据的有效根。无法查询json-简单解析器从调用中获得的数据类型
Object jsonData = parser.parse(data);我想您必须使用instanceof来检查您得到的类型,然后相应地进行转换。请注意,JSONArray没有扩展JSONObject,因此不能在两者之间进行转换。
https://stackoverflow.com/questions/34896034
复制相似问题