web-dev-qa-db-fra.com

obtenir de la valeur par clé jsonarray

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

6
mmu36478

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();
        }
    }
14
Chetan Joshi

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.

4
dwhite5914
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

2
Ravi MCA