【发布时间】:2015-12-09 09:54:58
【问题描述】:
在这里,我从本地资产文件夹中获取了 JSON。所有 JSON 对象的名称都不同。第 1、3、5、7 行 .... 最多 1000。特此附上 json 供您参考。
{
"status": {
"rcode": 200,
"message": "OK"
},
"data": {
"0": {
"OutletName": "Test 1 ",
"Latitude": "16.123234",
"Longitude": "79.546745"
},
"1": {
"OutletName": "Test 2",
"Latitude": "16.343234",
"Longitude": "79.786745"
},
"2": {
"OutletName": "Test 3",
"Latitude": "19.1294",
"Longitude": "72.836122"
},
"3": {
"OutletName": "Test 4",
"Latitude": "19.136383",
"Longitude": "72.827997"
},
"6": {
"OutletName": "Test 5",
"Latitude": "19.136715",
"Longitude": "72.829248"
},
"7": {
"OutletName": "Test 6",
"Latitude": "19.128483",
"Longitude": "72.821199"
},
"8": {
"OutletName": "Test 7",
"Latitude": "19.128528",
"Longitude": "72.819388"
},
"10": {
"OutletName": "Test 8",
"Latitude": "19.140333",
"Longitude": "72.831095"
},
"11": {
"OutletName": "Test 9",
"Latitude": "19.14027",
"Longitude": "72.826285"
}
}
}
这里的对象名称对所有人都不同。所以我尝试这样
private void parseJson() {
try {
JSONObject obj = new JSONObject(loadJSONFromAsset());
JSONObject jObj = obj.getJSONObject("data");
System.out.println("jObj.length()==> " + jObj.length());
for (int i = 0; i < jObj.length(); i++) {
if (jObj.has(String.valueOf(i)) && !jObj.isNull(String.valueOf(i))) {
JSONObject jObj1 = jObj.getJSONObject(String.valueOf(i));
System.out.println("Index==> "+i);
System.out.println("OutletName==> "+jObj1.getString("OutletName"));
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
但是在这里我没有得到所有的数据。请帮我解析这种 JSON。
提前致谢。
【问题讨论】:
-
好像你的 json 是错误的。请在解析之前发布完整的 json 或在 jsonlint.com 上检查 json 中的任何错误。
-
正如 Jolson 指出的那样,“7”行有错误:{“OutletName”:“Test 6”,“Latitude”:“19.128483”,“Longitude”:“72.821199”,}, ......那里,在经度字符串结束后......在其他对象之后类似,也先纠正它
-
正如 Jolson 所说,你的 JSon 对象是错误的,你需要有一个
dataJsonkey 的 JSon 数组 -
对不起。我已经编辑了 json 字符串。抱歉,这是一个测试/示例 json。真正的 json 将来自服务器。这也是同样的格式。请帮我解析这个json。
-
真的,你应该抓住那个制作 JSON 结构的人,友好地解释一下数组是什么。