JSONArray arr =
[
{"key1":"value1"},
{"key2":"value2"},
{"key3":"value3"},
{"key4":"value4"}
]
arr.get("key1")
renvoie une erreur. Comment puis-je obtenir la valeur par clé dans JSONArray
?
arr.getString("key1")
génère également une erreur. Dois-je parcourir le tableau? Est-ce la seule façon de le faire?
Quelle est l'erreur?
Dans la perspective de débogage Eclipse, ces expressions sont renvoyées comme; error(s)_during_the_evaluation
Vous pouvez analyser votre jsonResponse
comme le code ci-dessous:
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();
}
}
On dirait que vous voulez trouver une clé spécifique à partir d'un tableau de JSONObjects. Le problème est que c'est un tableau, vous devez donc parcourir chaque élément. Une solution, en supposant qu'aucune clé de répétition n'est ...
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;
}
Supposons maintenant que vous vouliez trouver la valeur de "key1" dans le tableau. Vous pouvez obtenir la valeur en utilisant la ligne: String value = (String) getKey(array, "key1")
. Nous transtypons une chaîne car nous savons que "key1" fait référence à un objet chaîne.
for (int i = 0; i < arr.length(); ++i) {
JSONObject jsn = arr.getJSONObject(i);
String keyVal = jsn.getString("key1");
}
Vous devez parcourir le tableau pour obtenir chaque JSONObject. Une fois que vous avez l'objet de json, vous pouvez obtenir values
en utilisant keys