2016-07-26 4 views
1

現在、GoogleプレイスAPIを使用してレストランの詳細を取得しているjsonを扱うのは新しいです。私はすでに、このようなGoogle Places API - AndroidエンドでJsonをデコードする

としてfollowig記事でそれを解読しようとしたが、それは限り私の理解に関しては非常に複雑である私のJSON文字列として役に立たないされている

私は、次のようなJSON文字列を返します。この特定の機能を

public String getVolleyURL() { 
     String query = null; 
//   query = SEARCH_QUERY + "&location=" + lat + "," + lon + "&radius=" + radius; 
      query = "&location=" + lat + "," +longg + "&radius=" + radius; 

     query = SEARCH_URL + query + "&key=" + GOOGLE_PLACE_KEY; 
     Log.wtf(TAG, "Volley_URL = " + query); 
     return query; 
    } 

使ってバレーボールのAPIを経由してJSONを取得しています

{ 
    "html_attributions" : [], 
    "results" : [ 
     { 
     "formatted_address" : "Metropolitan Life North Building, 11 Madison Ave, New York, NY 10010, Verenigde Staten", 
     "geometry" : { 
      "location" : { 
       "lat" : 40.74169, 
       "lng" : -73.9872068 
      }, 
      "viewport" : { 
       "northeast" : { 
        "lat" : 40.74190884999999, 
        "lng" : -73.98716930000001 
       }, 
       "southwest" : { 
        "lat" : 40.74161705, 
        "lng" : -73.98731529999999 
       } 
      } 
     }, 
     "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png", 
     "id" : "f758e0d7f68c659682afdb4b1c0749e7d3623839", 
     "name" : "Eleven Madison Park", 
     "opening_hours" : { 
      "open_now" : false, 
      "weekday_text" : [] 
     }, 
     "photos" : [ 
      { 
       "height" : 1200, 
       "html_attributions" : [ 
        "\u003ca href=\"https://maps.google.com/maps/contrib/102127816559576392189/photos\"\u003eTammy Liu\u003c/a\u003e" 
       ], 
       "photo_reference" : "CoQBdwAAACwNCAsIpt6Li3P49bVZfSX8yDOA3QTsPsgc52jYRliBNBEqboYcE409Wf-ZYIae__HbKvaW1Xed-lnKjr0dus2Gbnn1Y8PTH_7HX89aiDo4lTASyuU8N7DxHndhiAXPqY-ZKozOzLcSYA7tP50_-caFILD36WpSQJIEWSPu3cgzEhCQ7c2ltmabHZsR88s-gc8kGhShA5LDudy3ZvcDAjalj9yn_KR7bw", 
       "width" : 1800 
      } 
     ], 
     "place_id" : "ChIJEWbXz6ZZwokRLKmKrtPfVFY", 
     "price_level" : 4, 
     "rating" : 4.5, 
     "reference" : "CnRmAAAAWyhPb38cmZ765RA05cPPZkYqZbRGtDOOQi8d5yNuwCrvezX4liYo6DFNOdr8c-v2wwwnD9OqODteeO9oto9wNGI3F0ORvjKYCAwaNwGOMc2x8JYUljND4XmG41s0d44OXWxzloUQgRubjuFEDpTkhBIQAeucZk-7vCj6xP76Mkwt2RoUMaR7pkhrawYFttRUBIYellvYoJc", 
     "types" : [ "restaurant", "bar", "food", "point_of_interest", "establishment" ] 
     } 
    ], 
    "status" : "OK" 
} 

ヘルプの任意の並べ替えは本当にいただければ幸いです!ありがとうございます

+0

使用API​​ JSONを解析し、必要な値を取得します。 – lsiva

答えて

0

thisを試しましたか? JSONは非常に一般的な標準フォーマットなので、それらとのインターフェイスのための多量のリソースがあります。 JSONの "規則"はhereです。

0

uはこれを試してJSONレスポンスからformatted addressをデコードする場合とします

物事に注意すること:フォーマットされたアドレスのアドレスは、あなたのJSONレスポンスに「結果」キーの下に来る

JSONObjectリーダー=新しいJSONObject(クエリ) ;

JSONObject sys = reader.getJSONObject( "results");

address = sys.getString( "formatted_address");

ので、最終的に対処するには、値「メトロポリタン・ライフ北棟、11マディソンアベニューに」

0

を持つことになります。このコードでは、Googleからのデータを解析するためにあなたを助ける必要があるAPIを配置します。 ハッピーコード! gsonよう

String reference; 
String vicinity; 
String rating; 
JSONObject reader = new JSONObject(response); 
JSONArray data = reader.getJSONArray("results");   
for (int i = 0; i < data.length(); i++) { 
JSONObject place = (JSONObject) data.get(i); 
String idplace = place.getString("id"); 
String name = place.getString("name"); 
Double lat = place.getJSONObject("geometry").getJSONObject("location").getDouble("lat"); 
    Double lng = place.getJSONObject("geometry").getJSONObject("location").getDouble("lng"); 
if(place.has("photos")) { 
    reference = place.getJSONArray("photos").getJSONObject(0).getString("photo_reference"); 
         } 
         else 
         { 

          reference =null; 
         } 
         if(place.has("vicinity")) { 
          //it has it, do appropriate processing 
          vicinity = place.getString("vicinity"); 
         } 
         else 
         { 

          vicinity =null; 
         } 

         if(place.has("rating")) { 
          //it has it, do appropriate processing 
          rating = String.valueOf(place.getDouble("rating")); 
         } 
         else 
         { 

          rating =null; 
         } 
         // String vicinity = place.getString("vicinity"); 
         //String rating = String.valueOf(place.getDouble("rating")); 

       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

     }