2012-11-10 97 views
1

特定的按鍵我目前正試圖通過JSON對象,它看起來是這樣的迭代:搜索中JSON對象

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

我想返回每個項目的id的值。我怎樣才能做到這一點?

我在JS編程。

謝謝!

+1

你爲什麼要使用與對象'item1','item2'等?您應該使用數組。 '{「coupons」:[{「id」:「155」,...},{「id」:「255」,...}]}'然後你可以做'data.coupons.map(function (obj){return obj.id;});' –

回答

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

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

可以使用var .. in obj語法來遍歷屬性(或關聯索引;同樣的事情在JS)任何對象。因爲一些對象(如數組)有其他屬性,所以要避免迭代,因此請務必小心,因爲您知道要迭代的對象。

0

每個coupons[k]將項目和可以使用獲得的ID 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); 

} 
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); 
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> 
0

您可以使用DefiantJS(http://defiantjs.com),它使您使用XPath查詢搜索JSON結構。這個庫擴展全局對象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;