通过密钥jsonarray获取价值

mmu*_*478 6 java arrays json get

JSONArray arr = 
[
    {"key1":"value1"},
    {"key2":"value2"},
    {"key3":"value3"},
    {"key4":"value4"}
]
Run Code Online (Sandbox Code Playgroud)

arr.get("key1")抛出错误.如何通过键获取值JSONArray

arr.getString("key1")也会抛出错误.我应该循环播放数组吗?这是唯一的方法吗?

错误是什么?

在Eclipse Debug透视图中,这些表达式返回为; error(s)_during_the_evaluation

Che*_*shi 14

你可以解析jsonResponse下面的代码:

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();
        }
    }
Run Code Online (Sandbox Code Playgroud)


小智 5

听起来您想从 JSONObjects 数组中查找特定键。问题是,它是一个数组,所以你必须遍历每个元素。一种解决方案,假设没有重复键是......

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;
}
Run Code Online (Sandbox Code Playgroud)

现在,假设您想在数组中找到“key1”的值。您可以使用以下行获取值:String value = (String) getKey(array, "key1")。我们转换为字符串是因为我们知道“key1”指的是一个字符串对象。