我该如何解析JSON?

时间:2017-11-22 15:12:14

标签: android json

我正在尝试解析这个json。

然而,它不起作用......

我想在出发时解析4,15,C1,4A等所有巴士的expected_departure_time

这是我的代码无效。

try{


                                String str =  response.getString("departures");
                                JSONArray jsonArray = response.getJSONArray(str);
                                JSONObject bus = jsonArray.getJSONObject(0);
                                String four =  bus.getString("expected_departure_time");
                                textView.append(four);                 
                               }catch (JSONException e){
                                e.printStackTrace();
                               }

JSON

https://transportapi.com/v3/uk/bus/stop/6090282/live.json?app_id=d7180b02&app_key=47b460aac35e55efa666a99f713cff28&group=route&nextbuses=yes

2 个答案:

答案 0 :(得分:1)

您所犯的错误是您正在考虑将“离开”视为JsonArray,而JSON示例中并非如此,它是一个JsonObject(在我看来,这是构建这个Json的一种不好的方式) 。 无论如何,你必须通过这样做来获取“离开”JsonObject中的所有JsonObjects:

try
{   
    String jsonString=response.toString();
    JSONObject jObject= new JSONObject(jsonString).getJSONObject("departures");
    Iterator<String> keys = jObject.keys();
    while( keys.hasNext() )
    {
        String key = keys.next();
        JSONArray innerJArray = jObject.getJSONArray(key);
        //This is your example, you can add a loop here
        innerJArray(0).getString("expected_departure_time");
    }
}
catch (JSONException e)
{   e.printStackTrace();    }

答案 1 :(得分:0)

如果您需要将传输API用于其他功能,要将JSON字符串转换为Java对象,您可以使用GSON自动映射。 按照Leveraging the gson library中的说明操作,并根据此API制作您想要的任何回复。