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