{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
¿Cómo puedo obtener la clave y el valor de cada artículo sin conocer la clave ni el valor de antemano?
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
¿Cómo puedo obtener la clave y el valor de cada artículo sin conocer la clave ni el valor de antemano?
Respuestas:
Utilice el keys()
iterador para iterar sobre todas las propiedades y llameget()
a cada una.
Iterator<String> iter = json.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
Object value = json.get(key);
} catch (JSONException e) {
// Something went wrong!
}
}
Versión corta de la respuesta de Franci:
for(Iterator<String> iter = json.keys();iter.hasNext();) {
String key = iter.next();
...
}
Necesitarás usar un Iterator
para recorrer las claves para obtener sus valores.
Aquí hay una implementación de Kotlin, se dará cuenta de que la forma en que obtuve la cadena está usando optString()
, que espera una cadena o un valor anulable.
val keys = jsonObject.keys()
while (keys.hasNext()) {
val key = keys.next()
val value = targetJson.optString(key)
}
Debe utilizar el método keys()
o names()
. keys()
le dará un iterador que contiene todos los nombres de propiedad String en el objeto mientrasnames()
le dará una matriz de todos los nombres de String clave.
Puede obtener la documentación de JSONObject aquí
http://developer.android.com/reference/org/json/JSONObject.html
Eche un vistazo a la referencia de JSONObject:
http://www.json.org/javadoc/org/json/JSONObject.html
Sin usar realmente el objeto, parece que usar getNames () o keys () que devuelve un Iterador es el camino a seguir.
JSONObject
en Android no tiene getNames()
. developer.android.com/reference/org/json/JSONObject.html