// Create a check for IE9 (or any other specific browser).
if(IE9) {
$(".row.equal-cols > [class*='col-']").matchHeight();
}
JSONArray arr =
[
{"key1":"value1"},
{"key2":"value2"},
{"key3":"value3"},
{"key4":"value4"}
]
抛出错误。如何在arr.get("key1")
中按键获取值?
JSONArray
也会抛出错误。我应该循环播放数组吗?这是唯一的方法吗?
错误是什么?
在Eclipse Debug透视图中,这些表达式返回为; arr.getString("key1")
答案 0 :(得分:13)
您可以解析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();
}
}
答案 1 :(得分:4)
听起来你想要从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;
}
现在,让我们说你想要找到&#34; key1&#34;的价值。在数组中。您可以使用以下行获取值:String value = (String) getKey(array, "key1")
。我们投了一个字符串,因为我们知道&#34; key1&#34;指的是一个字符串对象。
答案 2 :(得分:2)
for (int i = 0; i < arr.length(); ++i) {
JSONObject jsn = arr.getJSONObject(i);
String keyVal = jsn.getString("key1");
}
您需要遍历数组以获取每个JSONObject。获得json的对象后,您可以使用values
keys
答案 3 :(得分:-3)
您可以按键轻松获取JSON数组元素:
var value = ArrName['key_1']; //<- ArrName is the name of your array
console.log(value);
或者你也可以这样做:
var value = ArrName.key_1;
就是这样!