Android JSONObject - como posso fazer um loop em um objeto JSON plano para obter cada chave e valor


Respostas:


313

Use o keys()iterador para iterar sobre todas as propriedades e chame get()cada uma.

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

7
Nota: Você não pode usar a forma abreviada para (String s: json.keys ()) {...} É uma pena que nem JSONArray nem JSONObject sejam iteráveis. :-(
tu-Reintegrar Monica-dor duh

o que é json aqui? Json Object, Json Array ou qualquer outra coisa?
Pravinsingh Waghela de

2
@PravinsinghWaghela é um JSONObject conforme especificado na pergunta
Nicolás Carrasco

66

Versão curta da resposta de Franci:

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

o que é json aqui? Json Object, Json Array ou qualquer outra coisa?
Pravinsingh Waghela de

json é JsonObject
Roozbeh Zabihollahi

@PravinsinghWaghela tenho certeza que o OP perguntou como fazer um loop por um objeto json.
Denny

5

Você precisará usar um Iteratorpara percorrer as chaves para obter seus valores.

Aqui está uma implementação do Kotlin, você perceberá que a forma como obtive a string está usando optString(), que está esperando uma String ou um valor anulável.

val keys = jsonObject.keys()
while (keys.hasNext()) {
    val key = keys.next()
    val value = targetJson.optString(key)        
}


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.