2010-11-29 21 views
5

私は近くのイベントのためにfoursquare APIを照会するアンドロイドのためのhttpgetリクエストを書いています。返されるJSONレスポンスはAndroidでのJSON応答の解析

{"groups": [ 
{ 
    "type": "Nearby", 
    "venues": [ 
    { 
     "id": 2587838, 
     "name": "Marriott Druids Glen Hotel Newtownmountkennedy", 
     "primarycategory": { 
     "id": 79281, 
     "fullpathname": "Travel:Resort", 
     "nodename": "Resort", 
     "iconurl": "http://foursquare.com/img/categories/travel/resort.png" 
     }, 
     "address": "Newtownmountkennedy", 
     "city": "Newtownmountkennedy", 
     "state": "", 
     "verified": false, 
     "geolat": 53.091717, 
     "geolong": -6.079162, 
     "stats": { 
     "herenow": "0" 
     }, 
     "distance": 5596 
    }, 

です。これらの場所は多くあります。私はそれが

InputStream instream = entity.getContent(); 
String result= convertStreamToString(instream); 
Log.i("Hoosheer0",result); 

// A Simple JSONObject Creation 
JSONObject json=new JSONObject(result); 
JSONArray venues = json.getJSONArray("groups"); 
//JSONArray docsArray = jObject.getJSONArray("docs"); 
for (int i = 0; i<venues.length();i++){ 
    String name = venues.getJSONObject(i).optString("venues"); 
    //String venueName = name. 
    Log.i("This is a name... pleasse", name); 
} 

instream.close(); 

がどのように私はgeolat & geolong値にアクセスすることができ、このコードを使用して、会場の情報をプリントアウトして入手できますか?

答えて

12

:それは会場の中にあるので

JSONObject venueObject = venues.getJSONObject(i); 
double geoLat = venueObject.getDouble("geolat"); 
double geoLong = venueObject.getDouble("geolong"); 
+0

これはエラー 「geolatなし値」を返しますが、それか? – Stina

+0

@Christina:umh、yes '" geolat "' *は会場内にあります(あなたの例によると)。だから私のコードでは、( 'JSONArray venues'の)会場を表す単一の' JSONObject'を取得してから、 'venueObject'から緯度と経度を取得します。スペルが正しいことを確認し、デバッガのコードをステップ実行して、必要に応じてより詳細な 'venueObject'の値を調べます。 – Nailuj

+0

ちょうど{グループの周りがコピーしなかったことに気づいた。私はこれがなぜ私にジオラトにアクセスすることを許さないのだろうと思う?私は今Qを編集しました。 – Stina

0

hereにチェックを入れ、それらの値を取得するために使用するJSONライブラリを選択できます。私はあなたのために、ループ内でこのコードを配置することはトリックを行う必要があります信じて