2010-12-13 62 views
3

Bonjour En essayant d'obtenir la valeur d'un élément d'un JsonObject. J'utilise Java avec la bibliothèque Gson .Essayer d'obtenir la valeur d'un élément ou de lui-même dans un élément de Json renvoie la valeur null

ici est la partie correspondante du code:

String s = "http://maps.googleapis.com/maps/api/directions/json?origin=30.065634,31.209473&destination=29.984177,31.440052&sensor=false"; 
URL url = new URL(s); 

BufferedReader r = new BufferedReader(new InputStreamReader(
    ((HttpURLConnection) url.openConnection()).getInputStream())); 

JsonStreamParser jsp = new JsonStreamParser(r); 

JsonParser jp = new JsonParser(); 

JsonElement jsonElement = jp.parse(r); 

JsonObject jsonObject = jsonElement.getAsJsonObject(); 

System.out.println(jsonObject.get("summary")); 

ici est une partie du JSON:

"status": "OK", "routes": [ { 
    "summary": "Mehwar Al Moneeb", 
    "legs": [ { 
     "steps": [ { 
     "travel_mode": "DRIVING", 
     "start_location": { 
      "lat": 30.0655100, 
      "lng": 31.2096600 
     }, 
     "end_location": { 
      "lat": 30.0654400, 
      "lng": 31.2096000 
     }, 
     "polyline": { 
      "points": "mdovDksn}DLJ", 
      "levels": "BB" 
     }, 
     "duration": { 
      "value": 1, 
      "text": "1 min" 
     }, 
     "html_instructions": "Head \u003cb\u003esouthwest\u003c/b\u003e on \u003cb\u003eOmar Toson\u003c/b\u003e toward \u003cb\u003eMohammed Roshdi\u003c/b\u003e", 
     "distance": { 
      "value": 9, 
      "text": "9 m" 
     } 
     } 

Quand je reçois l'élément supérieur « routes » son bien et il affiche l'impression ce qui est à l'intérieur de l'élément mais quand j'essaie par exemple d'obtenir l'élément "résumé" comme indiqué, le retour est nul, c'est ce qui est affiché dans la sortie, donc par la suite je ne peux pas en obtenir la valeur. Qu'est-ce qui ne va pas? comment peut-on obtenir la valeur de n'importe quel JsonElement? Merci de me répondre dès que possible. Merci d'avance.

Répondre

0

Routes est un tableau javascript. Résumé est une propriété du premier objet de ce tableau, vous devez donc utiliser jsonObject.getAsJsonArray("routes").get(0).get("summary"); ou équivalent. Je n'ai pas travaillé avec votre bibliothèque Java, mais le code JS serait jsonObject.routes[0].summary

Modifier: recherché GSON Documentation et le code mis à jour.

+0

Merci pour votre réponse, je pense que je l'ai eu. vous obtenez d'abord le jsonObject du fichier json puis l'élément supérieur en tant que tableau et pour obtenir l'élément à l'intérieur, vous devez d'abord l'obtenir en tant qu'objet JSON puis l'obtenir en tant que tableau en fournissant le nom de l'élément et ainsi de suite ... – Muaz

+0

à droite. code mis à jour ci-dessus. –