我正在尝试解析json文件:
{"units":[{"id":42,
"title":"Hello World",
"position":1,
"v_id":9,
"sites":[[{"id":316,
"article":42,
"clip":133904
}],
{"length":5}]
}, ..]}
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试解析内部时json array,代码不起作用,所以我得到:
Exception in thread "main" java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject
Run Code Online (Sandbox Code Playgroud)
例外是指向这一行:
JSONObject site = (JSONObject)jsonSites.get(i);
Run Code Online (Sandbox Code Playgroud)
有帮助吗?TNX.
Dan*_*non 19
我找到了一个有效的代码:
JSONParser parser = new JSONParser();
Object obj = parser.parse(content);
JSONArray array = new JSONArray();
array.add(obj);
Run Code Online (Sandbox Code Playgroud)
sites数组的第一个元素是一个数组,你可以看到缩进JSON:
{"units":[{"id":42,
...
"sites":
[
[
{
"id":316,
"article":42,
"clip":133904
}
],
{"length":5}
]
...
}
Run Code Online (Sandbox Code Playgroud)
因此,您需要相应地对待它的价值; 可能你可以这样做:
JSONObject site = (JSONObject)(((JSONArray)jsonSites.get(i)).get(0));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
103164 次 |
| 最近记录: |