java - org.json.simple.JSONArray 无法转换为 org.json.simple.JSONObject

标签 java json

我正在尝试解析下面的 json 文件:

{"units":[{"id":42,               
   "title":"Hello World",          
    "position":1,
    "v_id":9,
    "sites":[[{"id":316,
      "article":42,
      "clip":133904
        }],
       {"length":5}]

   }, ..]}

这是我试过的:

Object obj = null;
JSONParser parser = new JSONParser();
Object unitsObj = parser.parse(new FileReader("file.json");
JSONObject unitsJson = (JSONObject) unitsObj;

JSONArray units = (JSONArray) unitsJson.get("units");
Iterator<String> unitsIterator = units.iterator();
while(unitsIterator.hasNext()){         
    Object uJson = unitsIterator.next();
    JSONObject uj = (JSONObject) uJson;
    obj =  parser.parse(uj.get("sites").toString());
    JSONArray jsonSites = (JSONArray)  obj;

    for(int i=0;i<jsonSites.size();i++){
     JSONObject site = (JSONObject)jsonSites.get(i); // Exception happens here.
     System.out.println(site.get("article");
    }
}

当我尝试解析内部 json 数组 时代码不工作,所以我得到:

Exception in thread "main" java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject

异常指向这一行:

JSONObject site = (JSONObject)jsonSites.get(i);

有什么帮助吗?谢谢。

最佳答案

我找到了一个工作代码:

JSONParser parser = new JSONParser();
Object obj  = parser.parse(content);
JSONArray array = new JSONArray();
array.add(obj);

如果你不需要数组(像作者一样),你可以简单地使用

JSONParser parser = new JSONParser();
Object obj  = parser.parse(content);

关于java - org.json.simple.JSONArray 无法转换为 org.json.simple.JSONObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18440098/

相关文章:

java - Vscode eclipse 格式化程序设置以对齐方法参数

java - Arrays.sort从较高的数字到较低的数字?

JSON 从子对象获取父对象

javascript - JavaScript 中用于 json post 的条件对象

java - 无法使用jsp将数据插入mysql

java - 在Linux上安装JDK

asp.net - 如何在Visual Studio 2015的一种解决方案中跨多个ASP.NET CORE项目共享诸如appsettings.json之类的配置文件?

ios - SwiftyJSON 问题

javascript - 无法通过 POST 请求将 json 数据发送到服务器

java - 无需互联网连接的许可系统