java - 调用 org.json.JSONObject.getJSONArray 时出现奇怪的行为

标签 java android json getjson

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

相关文章:

java - Java 中的装箱和自动装箱有什么区别?

c# - AES需要使用Java吗?

javascript - PhoneGap javascript 引用问题

java - Webview 无法在 fragment 中工作

php - 依赖 hell : installing Sonata User

java - 高效的 Java 语言构造来检查字符串是否为 pangram?

java - 测试 JLabel 是否需要更改大小

android - Kotlin android 中的 GSON 序列化,覆盖属性

json - 如何在elasticsearch中删除多个文档?

java - 使用jackson进行JSON反序列化