我有以下 JSON:
{
data: [
{
objectType: "ServiceForbiddenException",
item: {
service: "users",
action: "index",
code: 403,
message: "Access to the service [users] is forbidden."
}
}
]
}
我尝试使用以下代码 fragment 解析它:
String bodyData = iRes.body().string();
try{
JSONObject body = new JSONObject(bodyData);
JSONArray data = body.getJSONArray("data");
JSONObject type = data.getJSONObject(0);
JSONArray item = data.getJSONArray(1);
}
catch (Exception e)
{
e.printStackTrace();
}
问题在于 JSONArray data = body.getJSONArray("data");
实际上是整个数据,而不是数组。
如何正确解析它?有没有更好的库/方法来解析 Java (Android) 中的 json
最佳答案
对象是使用 {}
创建的,数组是使用 []
创建的。所以
data:[
{ }
]
是标记为data
的数组,它只包含一个对象(未标记,但索引为0
),因此调用
data.getJSONArray(1);
这里没有意义,因为它会尝试找到
data:[
{ }
[ ] <-this, but you don't have it in your JSON
]
您似乎想要获取 item
object ,它是您已从数组中获取并存储在 type
中的对象的一部分。
所以而不是
JSONArray item = data.getJSONArray(1);
使用
JSONObject item = type.getJSONObject("item");
^^^^^^^^^^ ^^^^ ^^^^^^^^^^ - things you need to change
关于java - 在 Java 中将 JSON 解析为字符串时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31305089/