我怎么看大JSON对象是否包含值?
我正在使用PHP来json编码一个大规模的多维事件数组,所以我得到这样的东西:
var ents = {"7":{"event_id":"7","nn":"The Whisky Drifters","nn_url":"the-whisky-drifters", "venue":"The Grain Barge","date_num":"2010-06-11","date_txt":"Friday 11th June", "gig_club":"1","sd":"A New Acoustic String Band...","ven_id":"44", "art":0},"15":{"event_id":"15","nn":"Bass Kitchen","nn_url":"bass-kitchen", "venue":"Timbuk2","date_num":"2010-06-11","date_txt":"Friday 11th June", "gig_club":"2","sd":"Hexadecimal \/ DJ Derek \/ Id","ven_id":"21", "art":1},
第一个维度是id,请参阅
var ents = {"7":{
因此,可以在不检查嵌套对象的情况下获取ID …
检查我的JSON是否包含id的最快,最有效的方法是什么?
您可以使用hasOwnProperty
方法:
if (ents.hasOwnProperty('7')) { //.. }
此方法检查对象是否包含指定的属性,而不管其值如何。
比in
运算符更快in
因为它不检查inheritance的属性。
除了CMS所说的:如果你需要所有属性,你可以使用for ... in
循环遍历:
for (prop in ents) { alert(prop); // Shows "7", "15", etc. // Accessing the sub-object: alert(ents[prop].nn); // Shows the names of each event }
这也不是“多维arrays”。 它是一个对象(具有更多嵌套对象)。
是的,它是可能的,但你必须在客户端循环完整的json对象。
var JSONobj = ents, yourid; for(key in JSONobj) { if(((typeof key) == 'number') && key==yourid ) alert(key); }
如果您使用的是jQuery,则可以使用$ .each方法从jsonObject获取fetchng键
var JSONobj = ents, yourid; $.each(JSONobj, function(key, value){ if(((typeof key) == 'number') && key==yourid ) alert(key); //ids.push(key); });
只需使用myObject.has("keyName")
。 这才是真正有效的。