1

我得到以下字符串:

[{"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]);
            },
4

5 回答 5

2

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

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

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

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


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

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

所有这些都假设您的响应具有正确的Content-Type设置,或者您已经dataType:"json"给予$.ajax().

于 2012-10-08T16:22:22.007 回答
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) })
于 2012-10-08T16:26:53.083 回答
1

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

于 2012-10-08T16:30:12.653 回答
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"]);
});

检查 FIDDLE </p>

于 2012-10-08T16:21:35.533 回答
0

您没有指定,但假设 JSON 字符串是您的 ajax 代码作为响应接收的内容,那么您实际上是在重新对该文本进行 JSON 处理,因此它变成了一个双编码字符串。

jquery 可以为您自动解码回本机结构,如果您说您期望 json 作为响应,例如

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

那么你就会有

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

或者

data = jquery.parseJSON(result);
alert(data[0]['key']);
于 2012-10-08T16:23:38.077 回答