gpt4 book ai didi

java - 在 Java 中将 JSON 解析为字符串时遇到问题

转载 作者:行者123 更新时间:2023-11-30 08:49:42 25 4
gpt4 key购买 nike

我有以下 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com