我曾经有一个以这种方式转换为JSONObject的响应字符串:
JSONObject obj_temp = new JSONObject(response);
然后,我在字符串中添加了一些修改。首先,索引“ TripDetails”刚刚进行了1次旅行,其中包含详细信息(旅行信息,乘客信息和驾驶员信息)。现在,通过新的修改,“ TripDetails”是一系列行程。每个索引对每个行程具有相同的信息(行程信息,乘客信息和驾驶员信息)。但是现在,有了这个新字符串,Android Studio给了我这个错误:
类型为org.json.JSONArray的无法转换为JSONObject
如果具有这种格式的字符串可以转换为JSONObject吗?这是有效的JSON字符串。这是完整的JSON:https://paste2.org/VemkLNMJ
答案 0 :(得分:1)
这是因为您将json对象设为array
(我不知道为什么,因为您只有1个元素)。无论如何,您可能可以执行以下操作:
JSONArray arr = new JSONArray(response);
JSONObject obj_temp = arr.getJSONObject(0);
答案 1 :(得分:1)
您的响应以Array开头,您尝试将其转换为Object。
[代表json数组节点
{代表json对象节点
JSONArray obj_temp = new JSONArray(response);
for(int i=0; i < jsonarray.length(); i++) {
JSONObject jsonobject = obj_temp.getJSONObject(i);
String id = jsonobject.getString("id");
String title = jsonobject.getString("title");
String company = jsonobject.getString("company");
String category = jsonobject.getString("category");}
答案 2 :(得分:0)
如果您将在对象内更改Attribute,则解析仍将成功进行,但是当您将整个对象从Object更改为Array时,JsonObject将不再与类型匹配。在这种情况下,您将必须创建一个JsonArray。
在数组中,您可以使用索引访问对象,而在JsonObject上则没有这种东西。对象和数组是两种非常不同的类型。