通过键jsonarray获取值

新手上路,请多包涵
JSONArray arr =
[
    {"key1":"value1"},
    {"key2":"value2"},
    {"key3":"value3"},
    {"key4":"value4"}
]

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

arr.getString("key1") 也会抛出错误。我应该遍历数组吗?这是唯一的方法吗?

错误是什么?

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

原文由 mmu36478 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 952
2 个回答

您可以解析您的 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();
        }
    }

原文由 Chetan Joshi 发布,翻译遵循 CC BY-SA 3.0 许可协议

听起来您想从 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;
}

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

原文由 dwhite5914 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题