我怎么看大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") 。 这才是真正有效的。