0

配列内に配列を持つ JSON を解析していますが、最初の配列内の配列のデータを取得できないようです。

私の JSON は次のようになります (最後に切り取ったので、それほど長くはありませんでした)。

{"TrackingInformationResponse": {
"shipments": [
{
  "shipmentId": "03015035146308",
  "uri": "\/ntt-service-rest\/api\/shipment\/03015035146308\/0",
  "assessedNumberOfItems": 1,
  "deliveryDate": "2013-05-13T11:47:00",
  "estimatedTimeOfArrival": "2013-05-13T16:00:00",
  "service": {
    "code": "88",
    "name": "DPD"
  },
  "consignor": {
    "name": "Webhallen Danmark ApS",
    "address": {
      "street1": "Elsa Brändströms Gata 52",
      "city": "HÄGERSTEN",
      "countryCode": "SWE",
      "country": "Sverige",
      "postCode": "12952"
    }
  },
  "consignee": {
    "name": "Lene Bjerre Kontor & IT Service",
    "address": {
      "street1": "Lene Bjerre",
      "street2": "Ørbækvej 8, Hoven",
      "city": "TARM",
      "countryCode": "???",
      "postCode": "6880"
    }
  },
  "statusText": {
    "header": "Forsendelsen er udleveret",
    "body": "Forsendelsen blev leveret 13-05-2013 kl. 11:47"
  },
  "status": "DELIVERED",
  "totalWeight": {
    "value": "0.55",
    "unit": "kg"
  },
  "totalVolume": {
    "value": "0.005",
    "unit": "m3"
  },
  "items": [
    {
      "itemId": "03015035146308",
      "dropOffDate": "2013-05-08T17:18:00",
      "deliveryDate": "2013-05-13T11:47:00",
      "status": "DELIVERED",
      "statusText": {
        "header": "Forsendelsen er udleveret til modtageren",
        "body": "Forsendelsen blev udleveret  13-05-2013 kl. 11:47"
      },

「shipments」配列の内容は問題なく取得できますが、「items」配列の内容を取得する方法がわかりません。私のコードは次のようになります。

try {
            JSONObject jsonObject = new JSONObject(result);
            JSONObject TrackingInformationResponse = new JSONObject(jsonObject.getString("TrackingInformationResponse"));
            JSONArray shipments = new JSONArray(TrackingInformationResponse.getString("shipments"));

            for (int i = 0; i < shipments.length(); i++) {
                JSONObject JSONitems = shipments.getJSONObject(i);        
                String shipmentId = JSONitems.getString("shipmentId");

                //do stuff
            }
        } catch (Exception e) {
            Log.d("ReadWeatherJSONFeedTask", e.getLocalizedMessage());
        }

「shipments」配列で行ったのと同じように、「items」配列でも同じことを行うにはどうすればよいですか?

4

3 に答える 3

1

出荷と同じように、Shipment 配列内から配列を取得してitemsから、出荷と同じようにそれを反復処理する必要があります。

次のようになります。

 JSONObject jsonObject = new JSONObject(result);
            JSONObject TrackingInformationResponse = new JSONObject(jsonObject.getString("TrackingInformationResponse"));
            JSONArray shipments = new JSONArray(TrackingInformationResponse.getString("shipments"));

            for (int i = 0; i < shipments.length(); i++) {
                JSONObject JSONitems = shipments.getJSONObject(i);        
                String shipmentId = JSONitems.getString("shipmentId");
                JSONArray items = new JSONArray(JSONitems.getString("items");
                 //get items stuff
                //do stuff
            }

        } catch (Exception e) {
            Log.d("ReadWeatherJSONFeedTask", e.getLocalizedMessage());
        }
于 2013-05-28T00:21:23.810 に答える
0

以下のコードを試してください:

JSONObject jObject = new JSONObject(yourJSONString);
JSONObject trackInfo = jObject.getJSONObject("TrackingInformationResponse");
JSONArray shipMents = trackInfo.getJSONArray("shipments");
JSONArray items = shipMents.getJSONArray("items");
于 2013-05-28T01:18:09.157 に答える