2010-12-13 9 views
3

こんにちは、JsonObjectから要素の値を取得しようとしています。私は Gsonライブラリでjavaを使用しています。ここJsonの要素の中にある要素またはその要素の値を取得しようとするとnullが返される

は、コードの関連部分である:ここ

String s = "http://maps.googleapis.com/maps/api/directions/json?origin=30.065634,31.209473&destination=29.984177,31.440052&sensor=false"; 
URL url = new URL(s); 

BufferedReader r = new BufferedReader(new InputStreamReader(
    ((HttpURLConnection) url.openConnection()).getInputStream())); 

JsonStreamParser jsp = new JsonStreamParser(r); 

JsonParser jp = new JsonParser(); 

JsonElement jsonElement = jp.parse(r); 

JsonObject jsonObject = jsonElement.getAsJsonObject(); 

System.out.println(jsonObject.get("summary")); 

は、JSONの一部です:

"status": "OK", "routes": [ { 
    "summary": "Mehwar Al Moneeb", 
    "legs": [ { 
     "steps": [ { 
     "travel_mode": "DRIVING", 
     "start_location": { 
      "lat": 30.0655100, 
      "lng": 31.2096600 
     }, 
     "end_location": { 
      "lat": 30.0654400, 
      "lng": 31.2096000 
     }, 
     "polyline": { 
      "points": "mdovDksn}DLJ", 
      "levels": "BB" 
     }, 
     "duration": { 
      "value": 1, 
      "text": "1 min" 
     }, 
     "html_instructions": "Head \u003cb\u003esouthwest\u003c/b\u003e on \u003cb\u003eOmar Toson\u003c/b\u003e toward \u003cb\u003eMohammed Roshdi\u003c/b\u003e", 
     "distance": { 
      "value": 9, 
      "text": "9 m" 
     } 
     } 

私は先頭の要素「ルート」その罰金を取得して印刷する場合、それが表示されます要素の中で何が、たとえば、図のように要素 "要約"を取得しようとすると、戻り値はnullです。つまり、出力に何が表示されているのかによって、後で値を取得できません。 何が間違っていますか?どのようにJsonElementの価値を得ることができますか?できるだけ早く私に返信してください。前もって感謝します。

答えて

0

経路はJavaScript配列です。サマリーは配列内の最初のオブジェクトのプロパティなので、jsonObject.getAsJsonArray("routes").get(0).get("summary");または同等のものを使用する必要があります。私はあなたのJavaライブラリを使っていませんが、JSコードはjsonObject.routes[0].summary

です。編集:Look up up GSON Documentationと更新されたコード。

+0

あなたの答えをありがとう、私はそれを得たと思う。最初にjsonファイルのjsonObjectを取得し、次に配列の一番上の要素を取得し、内部で要素を取得するには、まずJsonオブジェクトとして取得し、次に要素の名前などを指定して配列として取得する必要があります... – Muaz

+0

が正しいです。コードは上記で更新されました。 –

関連する問題