2012-11-26 7 views
84

Moje pytania. jest prosty, ale nikt go o to nie zapytał ani nie odpowiedział.Android (JSONObject) Jak mogę przechodzić przez płaski obiekt JSON, aby uzyskać każdy klucz i każdą wartość

mam płaski JSON:

{"number1":"value1", "number2":"value2", "number3":"value3" } 

mogę ustawić go na JSONObject dobrze. Jednak nie wiem, jak przechodzić przez każdy element i uzyskać jego ciąg znaków i ciąg znaków.

Czy ktoś może podać efektywny kod do używania JSONObject? Naprawdę chcę uzyskać klucz i wartość każdego przedmiotu bez znajomości klucza ani wartości.

Z góry dziękuję.

+1

http://stackoverflow.com/questions/9151619/java-iterate-over- jsonobject –

Odpowiedz

253

Użyj iteratora keys() do iteracji po wszystkich właściwościach i wywołaj get() dla każdego z nich.

Iterator<String> iter = json.keys(); 
while (iter.hasNext()) { 
    String key = iter.next(); 
    try { 
     Object value = json.get(key); 
    } catch (JSONException e) { 
     // Something went wrong! 
    } 
} 
+5

Uwaga: Nie można użyć krótkiego formularza dla (String s: json.keys()) {...} Szkoda, że ​​ani JSONArray, ani JSONObject nie są iterowalne. :-( – tudor

+0

co to jest json tutaj? Obiekt Json, Json Array czy coś jeszcze? –

+1

@PravinsinghWaghela to JSONObject, jak określono w pytaniu –

-1

Spójrz na odniesienie JSONObject:

http://www.json.org/javadoc/org/json/JSONObject.html

bez faktycznego korzystania z obiektu, wygląda przy użyciu albo getNames() lub przyciski(), która zwraca iterator jest sposobem udać się.

+1

Zły link. '' JSONObject' w Androidzie nie ma 'getNames()'. http://developer.android.com/reference/org/json/JSONObject.html – Weetu

59

Krótka wersja odpowiedzi Franci za:

for(Iterator<String> iter = json.keys();iter.hasNext();) { 
    String key = iter.next(); 
    ... 
} 
+1

Bardzo elegancki, bardzo przydatny! – Cocorico

+0

czym jest json tutaj? Obiekt Json, Json Array lub coś jeszcze? –

+0

json to JsonObject –

Powiązane problemy