前提
GoogleMapAPIでの下記レスポンスをSalesforceのAPEXを使用して配列化し、特定のvalueを取得したい
{ "results" : [ { "address_components" : [ { "long_name" : "1", "short_name" : "1", "types" : [ "premise" ] }, { "long_name" : "7", "short_name" : "7", "types" : [ "political", "sublocality", "sublocality_level_4" ] }, { "long_name" : "1丁目", "short_name" : "1丁目", "types" : [ "political", "sublocality", "sublocality_level_3" ] }, { "long_name" : "永田町", "short_name" : "永田町", "types" : [ "political", "sublocality", "sublocality_level_2" ] }, { "long_name" : "千代田区", "short_name" : "千代田区", "types" : [ "locality", "political" ] }, { "long_name" : "東京都", "short_name" : "東京都", "types" : [ "administrative_area_level_1", "political" ] }, { "long_name" : "日本", "short_name" : "JP", "types" : [ "country", "political" ] }, { "long_name" : "107-0052", "short_name" : "107-0052", "types" : [ "postal_code" ] } ], "formatted_address" : "日本、〒107-0052 東京都千代田区永田町1丁目7−1", "geometry" : { "bounds" : { "northeast" : { "lat" : 35.6718197, "lng" : 139.7418786 }, "southwest" : { "lat" : 35.671749, "lng" : 139.7417899 } }, "location" : { "lat" : 35.6717816, // 取得したい値 "lng" : 139.7418364 // 取得したい値 }, "location_type" : "ROOFTOP", "viewport" : { "northeast" : { "lat" : 35.6730461302915, "lng" : 139.7432597302915 }, "southwest" : { "lat" : 35.6703481697085, "lng" : 139.7405617697085 } } }, "place_id" : "ChIJeYgkB4aLGGAREJ71ye_H0Ak", "types" : [ "premise" ] } ], "status" : "OK" }
実現したいこと
上記構造のlocationのlat,lngを取得したい
該当のソースコード
Java
1 final String endpoint = 'https://maps.googleapis.com/maps/api/geocode/json?address=' + '東京都千代田区永田町1丁目7−1' + '&components=country:JP&key=API_KEY'; 2HttpRequest req = new HttpRequest(); 3Http h = new Http(); 4req.setMethod('GET'); 5req.setEndpoint(endpoint); 6HttpResponse res = h.send(req); 7Map<String,Object> resText = (Map<String,Object>)JSON.deserializeUntyped(res.getBody()); 8Map<String,Object> results = (Map<String,Object>)resJson.get('results'); 9//これで上記構造のresult以下は取得できた。
試したこと
・Mapでの取得は一通り試しましたが、間にListが入っていることでObject→Listのキャストがうまくいきませんでした。
・JSON.parseなどのドキュメントもありましたが、特定のキーを取得するだけなのでイテラルとして扱うのは少し違和感があります。
・Wrapperクラスでの定義も考えましたが、2階層以上だとどのように定義するかがよくわかりません。
以上よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/30 09:10
2022/12/30 14:45 編集