Я использую 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},
первый размер является идентификатором, посмотрите
var ents = {"7":{
Таким образом, возможно получить идентификаторы, не исследуя вложенные объекты...
Каков самый быстрый, самый эффективный способ проверить, содержит ли мой JSON идентификатор?
Вы можете использовать метод hasOwnProperty
метод:
if (ents.hasOwnProperty('7')) {
//..
}
Этот метод проверяет, содержит ли объект указанное свойство независимо от его значения.
Это быстрее, чем оператор in
потому что он не проверяет унаследованные свойства.
да, это возможно, но вам придется перебирать весь объект json на стороне клиента.
var JSONobj = ents, yourid;
for(key in JSONobj)
{
if(((typeof key) == 'number') && key==yourid )
alert(key);
}
Если вы используете jQuery, то вы можете использовать метод $.each для получения ключей из jsonObject
var JSONobj = ents, yourid;
$.each(JSONobj, function(key, value){
if(((typeof key) == 'number') && key==yourid )
alert(key);
//ids.push(key);
});
В дополнение к тому, что 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
}
Также это не «многомерный массив». Это объект (с большим количеством вложенных объектов).