2010-11-29 15 views
4

Ich habe ein JSONArray und ich muss die hashmap mit den Werten bekommen, weil ich einen Stream befüllen muss, wie twitter done. Was schlagen Sie vor?JSONArray zu HashMap

+0

Oh, ja, ich forgott. Sorry :) – Fabian

Antwort

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

So ähnlich.

+1

Danke! Das hat für meine Situation funktioniert. Nur edit wäre das Ersetzen der 'pairs.add ...' durch 'pairs.put ...'. – FilmiHero

+0

Ich würde vorschlagen, die "String n, JSONObject j, Iterator es" außerhalb der for-Schleife zu definieren. Denn wenn wir mit einer großen Anzahl von JSONObjects zu tun haben, wird der Stack überlaufen und das Programm kann langsamer werden. –

0

Sie können Iterator verwenden, um JsonArrays zu erhalten. oder verwenden Sie diesen Weg

z.

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")); 
    ............ 
    ............ 
} 

Anmerkung: Für eine bessere Codierung Verwendung Iterator