我目前正在尝试迭代看起来像这样的JSON对象:
"coupons":{
"item1":{
"id":"155",
"name":"First Item",
"value":-5199.6
},
"item2":{
"id":"255",
"name":"Second Item",
"value":-424.91
}
}
我想返回每个项目ID的值。我怎么能做到这一点?
我在JS编程。
谢谢!
答案 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
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;