java - getjsonarray - obtener valor por clave jsonarray
jsonarray java (4)
JSONArray arr =
[
{"key1":"value1"},
{"key2":"value2"},
{"key3":"value3"},
{"key4":"value4"}
]
arr.get("key1")
arroja un error. ¿Cómo puedo obtener el valor por clave en JSONArray
?
arr.getString("key1")
también arroja un error. ¿Debería recorrer el conjunto? ¿Es la única manera de hacerlo?
¿Cuál es el error?
En la perspectiva de Eclipse Debug, estas expresiones retornan como; error(s)_during_the_evaluation
Parece que quieres encontrar una clave específica de una matriz de JSONObjects. El problema es que es una matriz, por lo que debe iterar sobre cada elemento. Una solución, suponiendo que no se repitan las teclas es ...
private Object getKey(JSONArray array, String key)
{
Object value = null;
for (int i = 0; i < array.length(); i++)
{
JSONObject item = array.getJSONObject(i);
if (item.keySet().contains(key))
{
value = item.get(key);
break;
}
}
return value;
}
Ahora, supongamos que quiere encontrar el valor de "clave1" en la matriz. Puede obtener el valor usando la línea: String value = (String) getKey(array, "key1")
. Echamos a una cadena porque sabemos que "clave1" se refiere a un objeto de cadena.
Puede analizar su jsonResponse
como el siguiente código:
private void parseJsonData(String jsonResponse){
try
{
JSONArray jsonArray = new JSONArray(jsonResponse);
for(int i=0;i<jsonArray.length();i++)
{
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
String value1 = jsonObject1.optString("key1");
String value2 = jsonObject1.optString("key2");
String value3 = jsonObject1.optString("key3");
String value4 = jsonObject1.optString("key4");
}
}
catch (JSONException e)
{
e.printStackTrace();
}
}
for (int i = 0; i < arr.length(); ++i) {
JSONObject jsn = arr.getJSONObject(i);
String keyVal = jsn.getString("key1");
}
Necesita iterar a través de la matriz para obtener cada JSONObject. Una vez que tienes el objeto de json puedes obtener values
usando keys
Puede obtener fácilmente un elemento de matriz JSON por clave como esta:
var value = ArrName[''key_1'']; //<- ArrName is the name of your array
console.log(value);
Alternativamente, puedes hacer esto también:
var value = ArrName.key_1;
¡Eso es!