Android JSON Parse: JSONObject內又包了一個JSONObject
在Android中,當我們所需要的資料欄位位於JSON格式物件中的物件時,該怎麼取得我們要的欄位資料呢?
這邊使用公共運輸整合資訊流通服務平台提供的API所取得的台鐵站別片段JSON資料來做為範例:
也可將7~10行結合成一行:
這邊使用公共運輸整合資訊流通服務平台提供的API所取得的台鐵站別片段JSON資料來做為範例:
[
{
"StationID": "1001",
"StationName": {
"Zh_tw": "基隆",
"En": "Keelung"
},
"StationPosition": {
"PositionLat": 25.132483,
"PositionLon": 121.739134
},
"StationAddress": "基隆市仁愛區文昌里港西街5號",
"StationPhone": "02-24263743",
"OperatorID": "TRA",
"StationClass": 1
},
{
"StationID": "1002",
"StationName": {
"Zh_tw": "八堵",
"En": "Badu"
},
"StationPosition": {
"PositionLat": 25.108392,
"PositionLon": 121.729049
},
"StationAddress": "基隆市暖暖區八南里八堵路142號",
"StationPhone": "02-24560841",
"OperatorID": "TRA",
"StationClass": 2
}
]
{
"StationID": "1001",
"StationName": {
"Zh_tw": "基隆",
"En": "Keelung"
},
"StationPosition": {
"PositionLat": 25.132483,
"PositionLon": 121.739134
},
"StationAddress": "基隆市仁愛區文昌里港西街5號",
"StationPhone": "02-24263743",
"OperatorID": "TRA",
"StationClass": 1
},
{
"StationID": "1002",
"StationName": {
"Zh_tw": "八堵",
"En": "Badu"
},
"StationPosition": {
"PositionLat": 25.108392,
"PositionLon": 121.729049
},
"StationAddress": "基隆市暖暖區八南里八堵路142號",
"StationPhone": "02-24560841",
"OperatorID": "TRA",
"StationClass": 2
}
]
我們的目標是要取得各站的中文名稱,也就是"Zh_tw"欄位的資料,而這筆資料位於物件裡面的物件之中,其作法如下:
ArrayList<String> TRAStation = new ArrayList<>();
JSONArray resultArr = new JSONArray(finalJsonStr);// finalJsonStr為整個Json格式資料的String
for (int i = 0; i < resultArr.length(); i++) {
JSONObject parentArr = resultArr.getJSONObject(i);
String childStr = parentObj.getString("StationName");
JSONObject childObj = new JSONObject(childStr);
String StationName = childObj.getString("Zh_tw");
TRAStation.add(StationName);
}
也可將7~10行結合成一行:
TRAStation.add(new JSONObject(new JSONObject(parentObj.toString()).getString("StationName")).getString("Zh_tw"));
留言
張貼留言