2010-11-29 5 views
5

J'écris une requête httpget pour Android qui interroge l'API foursquare pour l'événement à proximité. La réponse JSON que je reçois en retour estParsing réponse JSON dans Android

{"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 
    }, 

Il peut y avoir plusieurs de ces sites. Je peux l'obtenir pour imprimer les informations de lieux en utilisant ce code

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(); 

Comment puis-je accéder aux geolat & valeurs geolong?

Répondre

12

Je crois placer ce code dans votre boucle for devrait faire l'affaire:

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

ce renvoie une erreur « Pas de valeur pour geolat » Est-ce parce qu'il est à l'intérieur du lieu? – Stina

+0

@Christina: umh, oui '' geolat ''* * est * dans un lieu (selon votre exemple). C'est pourquoi, dans mon code, je reçois d'abord un seul JSONObject représentant un lieu (à partir des lieux JSONArray), puis j'obtiens la latitude et la longitude de 'lieuObjet'. Assurez-vous que l'orthographe est correcte et parcourez le code dans le débogueur pour examiner les valeurs de 'lieuObjet' plus en détail si nécessaire. – Nailuj

+0

Juste remarqué que le {autour des groupes n'a pas copié. Je pense que c'est pourquoi il ne me permettra pas d'accéder à la géolathe ?? J'ai maintenant édité le Q. Merci pour l'aide – Stina

0

Vous pouvez vérifier here et choisir une bibliothèque JSON à utiliser pour obtenir ces valeurs.