2013-01-11 4 views
3

J'essaie d'analyser les informations météorologiques à partir d'un flux JSON http://www.worldweatheronline.com. Ce format est qu'il est disponible en:Analyse JSON, tableau dans un tableau (Android)

{ "data" : { "current_condition" : [ { "cloudcover" : "75", 
     "humidity" : "100", 
     "observation_time" : "10:01 PM", 
     "precipMM" : "0.0", 
     "pressure" : "1015", 
     "temp_C" : "3", 
     "temp_F" : "37", 
     "visibility" : "4", 
     "weatherCode" : "143", 
     "weatherDesc" : [ { "value" : "Mist" } ], 
     "weatherIconUrl" : [ { "value" : "http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0006_mist.png" } ], 
     "winddir16Point" : "N", 
     "winddirDegree" : "360", 
     "windspeedKmph" : "11", 
     "windspeedMiles" : "7" 
     } ], 

Donc, il est le current_condition JSONArray, que je suis parvenu à obtenir des valeurs de. Mais alors comment puis-je lire les valeurs des tableaux internes weatherDesc ou weatherIconUrl?

Voici mon code pour la lecture precipMM, pressure, temp_C, etc:

String precipMM = null; 
    try { 
     JSONObject data = json.getJSONObject("data"); 

     JSONArray current_condition = data.getJSONArray("current_condition"); 

     for(int i = 0; i < current_condition.length(); i++) { 
      precipMM = current_condition.getJSONObject(i).getString("precipMM"); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
+1

Hey Matt, avez-vous pu obtenir ce travail sans utiliser la bibliothèque Jackson. Je suis coincé dans une situation similaire. –

Répondre

3

Il est aussi simple que

current_condition.getJSONArray() 

Comme aussi avec l'analyse syntaxique JSON je suggérerais regardant cette bibliothèque http://jackson.codehaus.org/

EDIT Après avoir commenté

code que vous avez posté pourrait être amélioré beaucoup. Vous parcourez le tableau pour chaque valeur. Vous pouvez faire la même chose avec le tableau. Appelez juste .getJsonArray(), au lieu de .getJsonObject(). Cependant, cela signifie que votre code génère une erreur pour chacune des autres valeurs. Je recommanderais à nouveau la bibliothèque de Jackson

+0

J'ai essayé ceci, mais il nécessite une valeur int, il ne prend pas la chaîne "weatherDesc". Donc j'ai utilisé 9 comme int mais c'est hors de portée. –

+0

Très bien merci pour votre aide, je suis nouveau à JSON et je trouve cela très confus. Je vais jouer un peu et ensuite vérifier la bibliothèque Jackson. –

+0

Je l'ai trouvé difficile au début. C'est assez simple une fois que vous vous y êtes habitué. Essentiellement avec la bibliothèque jackson, vous créez l'objet Java et annotez les variables avec les valeurs que vous voulez extraire de jsonobject. Pas de déconner et c'est rapide – jiduvah

2

weatherDesc et weatherIconUrl sont fournis sous forme de tableau, de sorte que vous pouvez accéder par point à savoir l'intérieur d'une boucle.

Il suffit d'utiliser même commande que vous le faites pour current_condition

+0

Une boucle for à l'intérieur de la boucle que j'ai déjà? –