gpt4 book ai didi

java - JSONArray 未正确返回

转载 作者:行者123 更新时间:2023-12-02 04:28:40 25 4
gpt4 key购买 nike

我有这个 JSON 数据,正在尝试用 Java 进行处理。

{  
"status":"ok",
"data":{
"user_count":3,
"limit":20,
"page_number":1,
"users":[
{
"id":330,
"name":"jeff",
"email":"xxx@hotmail.com
},
"id":335,
"name":"joe",
"email":"xxx@hotmail.com
}
]
},
}

我能够获取状态,但无法获取所有用户,这很奇怪,因为我有另一个可以工作的 JSON 示例。

这是我的代码:

                    results = response.getString("status");
if (results.equals("ok")) {
JSONArray records = response.getJSONArray("data");
for (int i = 0; i < records.length(); i++) {
JSONObject obj = records.getJSONObject(i);
JSONArray users = obj.getJSONArray("users");
for (int j = 0; j < users.length(); j++) {
JSONObject v_obj = users.getJSONObject(j);
Log.d("Dracula", v_obj.getString("id"));
Log.d("Dracula", v_obj.getString("name"));
Log.d("Dracula", v_obj.getString("email"));
}
}
}

JSON 是否格式错误,或者其他什么情况?如有任何帮助,我们将不胜感激。

最佳答案

是的,它的格式严重错误:)这是更正后的。

{
"status": "ok",
"data": {
"user_count": 3,
"limit": 20,
"page_number": 1,
"users": [
{
"id": 330,
"name": "jeff",
"email": "xxx@hotmail.com"
},
{
"id": 335,
"name": "joe",
"email": "xxx@hotmail.com"
}
]
}
}

JSON 中的错误:

  1. 电子邮件后缺少双引号补全
  2. 详细信息后的额外 ,:{} 对象
  3. 第二个用户对象缺少开头 {

这是一个很好的tool检查您的 JSON 文件。尝试将您的 JSON 复制粘贴到其中,然后尝试我的。你会看到差异

UPDATE Moving on to potential Java Issues:

  1. 您的 data 不是一个数组,而是一个对象,但在 Java 代码中,您将其解析为一个 JSONArray reports = response.getJSONArray("data");

此外,问题可能实际上出在 Web 服务中。有时,当仅找到一个结果时,Web 服务会将数据类型从 array [] 更改为 object {}。这就是为什么将 data 解析为数组的代码对该对象失败的原因。您应该修复数据服务,将其作为一个对象的数组返回,如 data:[{..}] 或在 java 中进行检查以查看 data 是否为数组或对象。

如果您确实确认 data 始终作为对象传入(查看 JSON 的上下文是有意义的),则将代码切换为不迭代 data 但要像这样迭代 data.users :

 JSONObject records = response.getJSONObject("data");
JSONArray users = records.getJSONArray("users");

for (int j = 0; j < users.length(); j++) {
JSONObject v_obj = users.getJSONObject(j);
Log.d("Dracula", v_obj.getString("id"));
Log.d("Dracula", v_obj.getString("name"));
Log.d("Dracula", v_obj.getString("email"));
}

关于java - JSONArray 未正确返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31817719/

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