嘿,
我注意到在调用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/

10-12 00:24
查看更多