首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取ClassCastException

获取ClassCastException
EN

Stack Overflow用户
提问于 2016-01-20 09:22:51
回答 2查看 68关注 0票数 0

我有一个从JSON格式生成对象的Iterator。但不幸的是我得到了

ClassCastException:不能将org.json.simple.JSONArray转换为org.json.simple.JSONObject at Main.Test.main(Test.java:33)

我的考试课程如下:

代码语言:javascript
复制
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库。

EN

回答 2

Stack Overflow用户

发布于 2016-01-20 09:26:01

您似乎将数据保存为org.json.simple.JSONArray类型。试浇铸

代码语言:javascript
复制
JSONArray jsonObject = (JSONArray) jsonData;

而不是

代码语言:javascript
复制
JSONObject jsonObject = (JSONObject) jsonData;
票数 1
EN

Stack Overflow用户

发布于 2016-01-20 09:48:37

JSON objectJSON array都是JSON数据的有效根。无法查询json-简单解析器从调用中获得的数据类型

代码语言:javascript
复制
Object jsonData = parser.parse(data);

我想您必须使用instanceof来检查您得到的类型,然后相应地进行转换。请注意,JSONArray没有扩展JSONObject,因此不能在两者之间进行转换。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34896034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档