-1

我有以下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信息。但我无法让它工作,这是我的代码:idlatlonname

//////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);
            }

任何帮助将不胜感激,问候

4

4 回答 4

4

station不是JSONArrayJSONObject所以您需要首先从主 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);
   }
于 2013-10-23T18:54:17.013 回答
1

JSONObject不是 a并且JSONArray它包含三个JSONArraynamedprogrammstation和字段。您应该使用 JSON 结构相应地更改您的代码ownercount

于 2013-10-23T18:49:11.007 回答
0

你根本不需要外部循环

JSONObject jMain = new JSONObject( response_str);
JSONArray jStationList =jMain.getJSONArray("station");
JSONObject jStation =jStationList.getJSONObject(0);

String name= jsonstation.getString("name");

..ETC

于 2013-10-23T19:09:02.990 回答
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);
}
于 2013-10-23T19:09:47.317 回答