2010-11-29 6 views
4

J'ai un JSONArray et j'ai besoin d'obtenir le hashmap avec les valeurs, parce que j'ai besoin de remplir un flux, comme Twitter fait. Que suggérez-vous de faire?JSONArray à HashMap

+0

Oh, oui, je forgott. Désolé, – Fabian

Répondre

11
HashMap<String, String> pairs = new HashMap<String, String>(); 
for (int i = 0; i < myArray.length(); i++) { 
    JSONObject j = myArray.optJSONObject(i); 
    Iterator it = j.keys(); 
    while (it.hasNext()) { 
     String n = it.next(); 
     pairs.put(n, j.getString(n)); 
    } 
} 

Quelque chose comme ça.

+1

Merci! Cela a fonctionné pour ma situation. Seule l'édition serait de remplacer le 'paires.add ...' par 'paires.put ...'. – FilmiHero

+0

Je voudrais suggérer de définir le "String n, JSONObject j, Iterator it" hors de la boucle for. Parce que si nous devons traiter avec un grand nombre de JSONObjects, le Stack va avoir un débordement et le programme peut devenir plus lent. –

0

Vous pouvez utiliser Iterator pour obtenir JsonArrays. ou utiliser de cette manière

par ex. JSON

{ 
........ 
........ 

"FARE":[ //JSON Array 
    { 
    "REG_ID":3, 
    "PACKAGE_ID":1, 
    "MODEL_ID":9, 
    "MIN_HOUR":0 
    ....... 
    ....... 
    ....... 
    } 
     ] 
} 
HashMap<String, String> mMap= new HashMap<>(); 
for (int i = 0; i < myArray.length(); i++) { 

    JSONObject j = myArray.optJSONObject(i); 
    mMap.put("KEY1", j.getString("REG_ID")); 
    mMap.put("KEY2", j.getString("PACKAGE_ID")); 
    ............ 
    ............ 
} 

Note: Pour une meilleure utilisation de codage Iterator