嘿, 我在调用 getJSONArray 时注意到这种非常奇怪的行为。 这是我的代码:
JSONObject jsonObject = new JSONObject(data);
if (!jsonObject.getJSONObject("transfer").has("skill"))
return Collections.emptyList();
JSONArray events = jsonObject.getJSONObject("transfer").getJSONArray("skill");
现在,只要转移有超过 1 个技能元素,一切都会很好,但是当只有 1 个技能元素时,我会遇到异常:
Caused by: org.json.JSONException: Value {"id":"2","name":"DOGS"} at skill of type org.json.JSONObject cannot be converted to JSONArray at org.json.JSON.typeMismatch(JSON.java:96) at org.json.JSONObject.getJSONArray(JSONObject.java:548) ....
这有道理吗?我真的必须捕获异常并处理这种特定于数组的异常吗?
谢谢, 乌迪
最佳答案
每当您检索 JSON 对象时,都会用 try/catch block 包围您的代码。这样,当您获得任何意外的 JSON 对象时,您的程序将继续运行。
至于您的错误,当只有一项时,您的 JSONArray“技能”似乎没有存储为数组。如果您使用 Web 服务创建 JSON 对象,则问题可能出在 Web 服务中。
关于java - 调用 org.json.JSONObject.getJSONArray 时出现奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5745290/