2017-11-14 25 views
0

私はJSONであまり仕事をしていませんし、Google Maps Distance Matrix APIを使用して、使用したいデータをいくつか生成しています。JSON配列の要素へのアクセス

数字をからに引きます。

org.json.JSONException: JSONObject["duration"] not found 

I:ここで

String data = getOutputAsText(geoService); 
JSONObject json = new JSONObject(data); 
String duration = json.getJSONArray("rows").getString("duration"); 

は、コンソール出力です:

{ 
    "destination_addresses" : [ "Washington, DC, USA" ], 
    "origin_addresses" : [ "New York, NY, USA" ], 
    "rows" : [ 
     { 
     "elements" : [ 
      { 
       "distance" : { 
        "text" : "226 mi", 
        "value" : 364089 
       }, 
       "duration" : { 
        "text" : "3 hours 56 mins", 
        "value" : 14147 
       }, 
       "status" : "OK" 
      } 
     ] 
     } 
    ], 
    "status" : "OK" 
} 

は、私がここで私は(データは上記だけ配列です)最後しようとしたものだ、いくつかの異なるものを試してみました投稿する前に見て確認したが、私はこの特定の問題で私を助けることができる何かを発見していない。

私はdurationから自分のWebサービスに値を渡したいと思いますが、私は値を抽出する方法が分かりません。前もって感謝します!

+0

JSONに保存されているデータを表すクラスを作成し、次にJSONを使用してこれらのクラスに変換します。 – DwB

+0

あなたのJsonを解析するためにどのライブラリを使用しますか? –

+0

@DwB私はこの小さなjsonスニペットのJavaモデルを作成しません。 IDはむしろ "動的に"解析します –

答えて

0

まず、this答えをご覧ください。 org.jsonを使って、あなたはsmthをすることができます。そのように:

JSONObject obj = new JSONObject("Content of your string here"); 
JSONArray rows = obj.getJSONArray("rows"); 
for (int i = 0; i < rows.length(); i++) { 
JSONArray elements = rows.getJSONObject(i).getJSONArray("elements"); 
    for(int j = 0; j < elements.length(); j++) { 
    JSONObject element = elements.getJSONObject(j); 
    JSONObject duration = element.getJSONObject("duration"); 
    int value = duration.getInt("value"); 
    } 
} 

上記のコードは、あなたのJSON文字列を使用して、次の出力を生成した:14147

P.S.あなたはあなたが望む図書館を利用することができます。ここで使用されているものはデモンストレーションのために用意されたものです。