Java中的Parse Json无法正常工作

时间:2013-10-23 18:45:52

标签: java android json parsing arrays

我有以下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"
        }
    ]
}

我只需要获取stationidlatlonname信息。但是我无法让它工作,这里是我的代码:

//////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 个答案:

答案 0 :(得分:4)

stationJSONArray而不是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,名为programmstationowner以及{ {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);
}