2017-10-20 16 views
1

ここに誰かからの簡単な解決策があります。私は似たような質問があることを知っていますが、私の問題を解決するためにそれらを修正することはできません。POJOなしでGsonとJsonを解析しますか?

私は、このJSONレスポンスで「formatted_address」の文字列を解析しようとしています:

{ 
    "results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "Google Building 42", 
       "short_name" : "Google Bldg 42", 
       "types" : [ "premise" ] 
      }, 
      { 
       "long_name" : "1600", 
       "short_name" : "1600", 
       "types" : [ "street_number" ] 
      }, 
      { 
       "long_name" : "Amphitheatre Parkway", 
       "short_name" : "Amphitheatre Pkwy", 
       "types" : [ "route" ] 
      }, 
      { 
       "long_name" : "Mountain View", 
       "short_name" : "Mountain View", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Santa Clara County", 
       "short_name" : "Santa Clara County", 
       "types" : [ "administrative_area_level_2", "political" ] 
      }, 
      { 
       "long_name" : "California", 
       "short_name" : "CA", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "United States", 
       "short_name" : "US", 
       "types" : [ "country", "political" ] 
      }, 
      { 
       "long_name" : "94043", 
       "short_name" : "94043", 
       "types" : [ "postal_code" ] 
      } 
     ], 
     "formatted_address" : "Google Bldg 42, 1600 Amphitheatre Pkwy, Mountain 
    View, CA 94043, USA", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 37.42198310000001, 
        "lng" : -122.0853195 
       }, 
       "southwest" : { 
        "lat" : 37.4214139, 
        "lng" : -122.0860042 
       } 
      }, 
      "location" : { 
       "lat" : 37.4216548, 
       "lng" : -122.0856374 
      }, 
      "location_type" : "ROOFTOP", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 37.4230474802915, 
        "lng" : -122.0843128697085 
       }, 
       "southwest" : { 
        "lat" : 37.4203495197085, 
        "lng" : -122.0870108302915 
       } 
      } 
     }, 
     "place_id" : "ChIJPzxqWQK6j4AR3OFRJ6LMaKo", 
     "types" : [ "premise" ] 
     } 
    ], 
    "status" : "OK" 
    } 

以前gson使用する場合は、私が使用してすぐに私の結果を解析することができました:

Gson gson = new Gson(); 

    JsonArray body = gson.fromJson(ResultString, JsonArray.class); 
    System.out.println(body.get(0).getAsJsonObject().get("elementnamehere").getAsString()); 

主な違いは、この結果をJsonArray本体に入れることができないことです。代わりに(私はそれがネストされたデータを持っていると信じています)私はそれをJsonObjectにしなければなりませんが、私はNullを取得せずに私の人生のためにそれを解析することはできません。 POJOまたはレスポンスクラスを作成せずにこれを行う簡単な方法はありますか?そうでない場合は、誰かがなぜこれほどのようなことを行う方法/説明することができます:

Parsing nested JSON data using GSON

答えて

3

あなたは、ほとんどがあると、あなたはJsonObjectを解析する必要があることが正しいです。

JsonObject body = gson.fromJson(json, JsonObject.class); 
JsonArray results = body.get("results").getAsJsonArray(); 
JsonObject firstResult = results.get(0).getAsJsonObject(); 
JsonElement address = firstResult.get("formatted_address"); 
System.out.println(address.getAsString()); 
+0

チャームのように働いた!大変感謝しています。 – Tevor

関連する問題