我有这个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是否格式不正确?任何帮助表示赞赏。
答案 0 :(得分:2)
是的,它严重畸形:)这是纠正的一个。
{
"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中的错误:
,
:{} object {
这是检查JSON文件的好tool。尝试复制粘贴你的JSON,并尝试我的。你会看到差异
UPDATE 继续讨论潜在的Java问题:
data
不是数组而是对象,但在Java代码中,您将其解析为JSONArray records = response.getJSONArray("data");
此外,Web服务中可能存在问题。有时,当只找到一个结果时,Web服务会将数组类型从array []更改为object {}。这就是为什么将data
解析为数组的代码对此对象失败的原因。您应该修复数据服务,将其作为一个对象的数组返回data:[{..}]
,或者在java中检查以查看data
是数组还是对象。
如果确实data
总是以对象形式出现(有意义地查看JSON的上下文),那么将代码切换为不在data
上迭代,而是迭代{ {1}}喜欢这样:
data.users
答案 1 :(得分:0)
检查以下更正的json,您发布的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"
}
]
}
}
同样在你的java代码中:
results = response.getString("status");
if (results.equals("ok")) {
JSONArray 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"));
}
}