[英]How to parse the following JSON
在這里,我從本地資產文件夾中獲取以下 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。
提前致謝。
您需要像這樣使用keys
方法:
private void parseJson() {
try {
JSONObject obj = new JSONObject(loadJSONFromAsset());
JSONObject jObj = obj.getJSONObject("data");
Iterator iter = jObj.keys()
while(iter.hasNext()) {
String key = (String) iter.next();
JSONObject jObj1 = jObj.getJSONObject(key);
System.out.println("Index==> "+ key);
System.out.println("OutletName==> "+jObj1.getString("OutletName"));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
編輯:修復了一些類型轉換
首先,您必須對 json 響應進行更改
{
"status": {
"rcode": 200,
"message": "OK"
},
"data": { //this has to be array in your json
"0": { // and these are object inside the arrays
"OutletName": "Test 1 ",
"Latitude": "16.123234",
"Longitude": "79.546745"
},
"1": { // and these are object inside the arrays
"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"
}
}
}
並且不要超過 json 對象的大小來訪問它的對象它必須是 JSONArray 像這樣獲取 JSONArray 中的數組數據
JSONArray dataArray = response_obj.getJSONArray("data");
然后像這樣迭代
for (int i = 0; i < dataArray.length(); i++)
{
//write your code here to access all the object as for loop executes on by one
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.