{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
Como posso obter a chave e o valor de cada item sem saber a chave nem o valor de antemão?
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
Como posso obter a chave e o valor de cada item sem saber a chave nem o valor de antemão?
Respostas:
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!
}
}
Versão curta da resposta de Franci:
for(Iterator<String> iter = json.keys();iter.hasNext();) {
String key = iter.next();
...
}
Você precisará usar um Iterator
para 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)
}
Você deve usar o método keys()
ou names()
. keys()
fornecerá um iterador contendo todos os nomes de propriedade String no objeto, enquanto names()
fornecerá um array de todos os nomes de String chave.
Você pode obter a documentação JSONObject aqui
http://developer.android.com/reference/org/json/JSONObject.html
Dê uma olhada na referência JSONObject:
http://www.json.org/javadoc/org/json/JSONObject.html
Sem realmente usar o objeto, parece que usar getNames () ou keys () que retorna um Iterator é o caminho a percorrer.
JSONObject
no Android não tem getNames()
. developer.android.com/reference/org/json/JSONObject.html