比较Jquery中的JSON值

时间:2011-08-25 15:10:58

标签: jquery ajax json

我想检查“T1000”是否作为以下JSON中的批准“密钥”存在。如果它存在,那么我想显示相应的批准“值”。

{"approvals": 
    [
         {"approval":
            {
               "id":"0121920",
               "key":"T100",
               "value":"Ben Tsu"
            }
         },
         {"approval":
            {
               "id":"",
               "key":"T1000",
               "value":"Amy Dong"
            }
         }
    ]
}

我将JSON作为Ajax响应。我正在尝试遍历所有属性并将其与作为参数传入的值匹配。

这是我的代码,但它只吐出对象Object,object Object。因此,如果我有5个属性,则此代码将对象吐出5次。

我将inputFieldDefaultValue作为参数传递给插件,其值为T1000。因此,o.inputFieldDefaultValue。

$.each(response.approvals, function(index, approvals){ 
    if(approvals.approval.key == o.inputFieldDefaultValue){ 
         approvals.approval.value; 
    } 
}); 

如果我这样做

$.each(response.approvals, function(index, approvals){ 
    if(approvals.approval.key == o.inputFieldDefaultValue){ 
         alert(approvals.approval.value); 
    } 
});

它会警告相应的值(Amy Dong),但它仍会写入对象Object(与JSON响应中的属性一样多次)。

4 个答案:

答案 0 :(得分:3)

您可以使用以下遍历对象的代码来访问JSON对象的值:

var approvals = obj.approvals;

for(var i = 0; i < approvals.length; i++)
{
  if(approvals[i].approval.key = 'T1000')
  {
    // Display approvals[i].approval.value
  }
}

答案 1 :(得分:0)

可以在没有jQuery的情况下完成。您只需要Array.prototype.filterArray.prototype.map

var aListOfAllValuesFromKeysEqualsToT1000 = json.approvals.filter(function(approval) {
    return approval.key === "T1000";
}).map(function(approval) {
    return approval.value;
});

然后使用aListOfAllValuesFromKeysEqualsToT1000做任何你想要的值。

答案 2 :(得分:0)

你首先要使用你的json并使用JSON.parse(json)来获取一些对象文字。从那里你会做

var ary = obj.approvals;
for (var i = 0; i < ary.length; i++) {
  var current = ary[i], val;
  if (current.key === 'T1000') {
    val = current.value;
    break;
  }
}

答案 3 :(得分:0)

使用jQuery:

var approvals = obj.approvals;
$.each(approvals, function () {
    if (this.approval.key === 'T1000') {
        alert(this.approval.value);
    }
});