簡體   English   中英

JSON 嵌套解析

[英]JSON Nested Parsing

誰能幫我為這個 JSON 數據文件設置解析。

我想得到每列火車的出發。 結構是出發-> 全部-> 0,1,2,3 等...謝謝

我正在嘗試獲取某些字符串,例如時間、目的地和平台,然后將其顯示在每次出發的列表中。

 private void jsonParse()
{
    String url = key;

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    Log.d("REST", response.toString());
                    try {
                        JSONArray jsonArray= response.getJSONArray("departures");
                        Log.d("REST", jsonArray.toString());

                        for(int i = 0; i < jsonArray.length(); i++)
                        {
                            JSONObject departure = jsonArray.getJSONObject(i);
                            JSONObject all = departure.getJSONObject("all");

                            String Mode = all.getString("Mode");

                            TextViewResult.append(Mode + "\n");

                        }


                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    });

    Queue.add(request);
}

json文件

如果我理解正確,你不會得到任何結果,對吧?

JSON 對象 (0, 1, ...) 是“all”的子對象,它是JSONArray ,而不是JSONObject “出發”似乎是JSONObject而不是JSONArray 你應該:

  • 將“出發”作為JSONObject退出循環。

  • 從前一個中獲取“all”作為JSONArray ,因為它是“departures”的子項,並且在循環之外執行此操作。

  • 遍歷循環中的前一個JSONArray ,獲得每個代表一個出發點的JSONObject

因此, try中的塊將如下所示:

//logging omitted
JSONObject departuresJSONObj = response.getJSONObject("departures");
JSONArray allJSONArr = departuresJSONObj.getJSONArray("all");

JSONObject departureJSONObj;
String mode;

for (Object departureObj : allJSONArr) {

    if (departureObj instanceof JSONObject) {

        departureJSONObj = (JSONObject) departureObj;

        mode = departureJSONObj.getString("mode"); //mode is lowercase in the JSON
        TextViewResult.append(mode + "\n");

    }

}

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM