使用jQuery从JSON获取值

时间:2012-10-08 16:19:45

标签: javascript jquery json

我收到以下字符串:

[{"Key":1,"Value":"correct"},{"Key":2,"Value":"incorrect"},{"Key":3,"Value":"incorrect"},{"Key":4,"Value":"correct"},{"Key":5,"Value":"incorrect"}]

我想根据TR中的ID是否在JSON中具有“正确”或“不正确”的值来更改TR的背景颜色。

如何从JSON获取单个项目的值?我试过了:

            success: function (result) {
                // update with results
                //alert(JSON.stringify(result));
                //$('#myDiv').html(JSON.stringify(result));

                // non of these work
                alert(result[0]);
                alert(result[key]);
            },

5 个答案:

答案 0 :(得分:2)

您可以使用$.each()来迭代对象数组。

$.each(result, function(i, item) {
    alert(item.Key);
});

在回调$.each()时,item将是对正在迭代的数组中当前项的引用。

然后,您只需使用普通属性访问即可获取Key属性的值。


当然,您也可以使用传统的for语句循环数组。

for (var i = 0; i < result.length; i++) {
    var item = result[i];
    alert(item.Key);
}

所有这一切都假定您的回复具有正确的Content-Type设置,或者您已将dataType:"json"提供给$.ajax()

答案 1 :(得分:1)

您可以将JSON格式转换为Object,在您的情况下它将是数组,因此您可以使用forEach来检查您想要的内容。

试试这个

var obj= JSON.parse( '[{"Key":1,"Value":"correct"},{"Key":2,"Value":"incorrect"},{"Key":3,"Value":"incorrect"},{"Key":4,"Value":"correct"},{"Key":5,"Value":"incorrect"}]' );



obj.forEach(function(i){alert(i.Key);alert(i.Value) })

答案 2 :(得分:1)

看看这个:http://goessner.net/articles/JsonPath/.I没有使用它,但看起来和从Json结构中获取值的好方法。

答案 3 :(得分:0)

确保在Ajax请求中指定.. dataType:'json'

尝试

alert(result[0]["key"]);  // For the first

//

$.each(result , function(i) {
    console.log( 'Key is - ' + result[i]["Key"] + ' -- Value is - ' + result[i]["Value"]);
});

Check FIDDLE

答案 4 :(得分:0)

你没有指定,但假设你的ajax代码接收的是JSON字符串作为响应,那么你实际上是重新JSONing该文本,所以它变成了一个双重编码的字符串。

jquery可以为你自动解码回原生结构,如果你告诉你是在期待json作为回应,例如

$.ajax({
   dataType: 'json',
   etc...
});

然后你只需要

alert(result[0]['key']);

data = jquery.parseJSON(result);
alert(data[0]['key']);