在JSON对象中搜索特定键

时间:2012-11-10 21:34:05

标签: javascript json object loops iteration

我目前正在尝试迭代看起来像这样的JSON对象:

"coupons":{
    "item1":{
         "id":"155",
         "name":"First Item",
         "value":-5199.6
    },
    "item2":{
         "id":"255",
         "name":"Second Item",
         "value":-424.91
    }
}

我想返回每个项目ID的值。我怎么能做到这一点?

我在JS编程。

谢谢!

5 个答案:

答案 0 :(得分:1)

var coupons = {
    "item1":{
         "id":"155",
         "name":"First Item",
         "value":-5199.6
    },
    "item2":{
         "id":"255",
         "name":"Second Item",
         "value":-424.91
    }
}

var ids = [];
for(var item in coupons) {
    ids.push(coupons[item]['id']);
}

console.log(ids);

答案 1 :(得分:0)

var obj = { 'json...' };

for (var key in obj)
{
    var item = obj[key];
    alert("id is " + item.id);
}

您可以使用var .. in obj语法迭代任何对象的属性(或关联索引; JS中的相同内容)。一定要小心,你知道你正在迭代的对象,因为一些对象,如数组,有其他属性,你想避免迭代。

答案 2 :(得分:0)

每个coupons[k]都是商品,您可以使用coupons[k].id

获取ID
var coupons = {
    "item1":{
         "id":"155",
         "name":"First Item",
         "value":-5199.6
    },
    "item2":{
         "id":"255",
         "name":"Second Item",
         "value":-424.91
    }
}

for(var k in coupons){
      console.log(coupons[k].id);

}

答案 3 :(得分:0)

我会建议像:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>
var dataset = {
                "coupons":{
                    "item1":{
                         "id":"155",
                         "name":"First Item",
                         "value":-5199.6
                    },
                    "item2":{
                         "id":"255",
                         "name":"Second Item",
                         "value":-424.91
                    }
                }
            }

$(document).ready(function(){

    $.each(dataset.coupons, function(i, item) {
        $("#data").append('<p>' + item.id + '</p>'); 
        $("#data").append('<p>' + item.name + '</p>'); 
        $("#data").append('<p>' + item.value + '</p>'); }
    );

});

</script>
<div id="contentC"></div>

答案 4 :(得分:0)

您可以使用DefiantJS(http://defiantjs.com),它允许您使用XPath查询搜索JSON结构。这个lib使用方法“search”扩展全局对象JSON并返回一个带有匹配项的数组(如果有的话)(空数组,我找不到匹配项)。

XPath是一种标准化的查询语言,非常容易掌握。这是一个带有示例的测试工具; http://defiantjs.com/#xpath_evaluator

查看这个工作小提琴;
http://jsfiddle.net/hbi99/Yc6cc/

var data = {
    ...
},
res = JSON.search( data, '//*[id]' ),
str = '';

for (var i=0; i<res.length; i++) {
    str += res[i].id +' : '+ res[i].name +'<br/>';
}

document.getElementById('output').innerHTML = str;