2010-10-09 2 views
1

Je cette JSON pour analyserParsing JSON, pas sûr comment et quand utiliser itérateurs (Android Platform)

{"files_informations": { 
         "row":{"value":"artist1"}, 
         "row":{"value":"artist2"} 
         } 
} 

Je voudrais savoir comment puis-je obtenir la première valeur Artist1 puis la deuxième ARTIST2

C'est ce que je fais:

JSONObject myObject = jObject.getJSONObject("files_informations"); 
JSONObject rowObject = myObject.getJSONObject("row"); 
Iterator<JSONObject> rowIt = rowObject.keys(); 

while (rowIt.hasNext()) { 
    JSONObject tmp = rowIt.next();    
    Log.e("", tmp.getString("value")); 
} 

Je suis java.lang.classCastExce ption pour cette JSONObject tmp = rowIt.next();

Donc, il y a mes deux questions:

  • Ai-je besoin d'utiliser itérateurs dans ce cas?
  • Comment les utiliser?

Edit:

Si le JSON ressemble à ceci?

{"files_informations": [ 
         "row":{"value":"artist2"}, 
         "row":{"value":"artist1"} 
         ] 
} 
+1

Votre JSON peut avoir un problème: votre clé files_information a deux valeurs avec la clé "row", et la seconde remplacera la première lorsqu'elle sera analysée. Vous devez utiliser un tableau pour les informations sur les fichiers. – TuomasR

+0

Merci pour votre commentaire. J'ai édité mon post. Pensez-vous que le JSON devrait ressembler à celui que j'ai posté? – Spredzy

+0

Votre version modifiée n'est pas valide json. – whiskeysierra

Répondre

2

rowIt.next() est "rangée" String dans ce cas.

Refactoriser votre JSON à ceci:

{"files_informations": 
    [ {"value":"artist2"}, 
    {"value":"artist1"} ] } 

Ou encore ceci:

{ "files_informations": [ "artist2", "artist1" ] } 

puis utilisez:

JSONArray artistsArr = myObject.getJSONArray("files_informations"); 
for (int i = 0; i < artistsArr.size(); i++) { 
    // first case 
    Log.d(TAG, artistsArr.get(i).getString("value")); 
    // Second case 
    Log.d(TAG, artistsArr.getString(i)); 
} 

itérateurs ne sont pas pris en charge dans JSONArrays, mais vous pouvez convertir à des tableaux/listes Java si vous en avez vraiment besoin.