我有以下json:
{
"count" : "1567",
"program" : ["NDBC Meteorological\/Ocean", "International Partners"],
"owner" : ["NDBC", "Alaska Ocean Observing System"],
"station" : [{
"id" : "00922",
"lat" : "30",
"lon" : "-90",
"name" : "OTN201 - 4800922"
}
]
}
我只需要获取station
,id
,lat
,lon
等name
信息。但是我无法让它工作,这里是我的代码:
//////response_str is the json string///////
JSONArray pages = new JSONArray(response_str);
for (int i = 0; i < pages.length(); ++i) {
JSONObject rec = pages.getJSONObject(i);
JSONObject jsonPage =rec.getJSONObject("station");
String name= jsonPage.getString("name");
System.out.println(name);
}
任何帮助将不胜感激,问候
答案 0 :(得分:4)
station
是JSONArray
而不是JSONObject
,因此您需要首先从主JSONObject获取JSONArray,然后从id,lat,lon,..
中提取所有JSONObject
。将您的代码更改为:
JSONArray pages = new JSONArray(response_str);
for (int i = 0; i < pages.length(); ++i) {
JSONObject rec = pages.getJSONObject(i);
JSONArray jsonPage =rec.getJSONArray("station");
// get JSONObject
JSONObject jsonstation =jsonPage.getJSONObject(0);
String name= jsonstation.getString("name");
System.out.println(name);
}
答案 1 :(得分:1)
根是JSONObject
而不是JSONArray
,它包含三个JSONArray
,名为programm
,station
和owner
以及{ {1}}字段。您应该使用JSON结构相应地更改代码
答案 2 :(得分:0)
您根本不需要外部循环
JSONObject jMain = new JSONObject( response_str);
JSONArray jStationList =jMain.getJSONArray("station");
JSONObject jStation =jStationList.getJSONObject(0);
String name= jsonstation.getString("name");
...等
答案 3 :(得分:0)
你的问题是你将源字符串称为JSONArray而不是JSONObject(外部的括号表示它是一个数组)。以下是站点的名称。
JSONObject pages = new JSONObject(response_str);
for (int i = 0; i < pages.length(); ++i)
{
JSONArray stationInfo =rec.getJSONArray("station");
String name= stationInfo.getString("name");
System.out.println(name);
}