как я вижу, содержит ли большой объект 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},

первый размер является идентификатором, посмотрите

var ents = {"7":{

Таким образом, возможно получить идентификаторы, не исследуя вложенные объекты...

Каков самый быстрый, самый эффективный способ проверить, содержит ли мой JSON идентификатор?

21
задан Sildoreth 15 April 2015 в 16:26
поделиться

3 ответа

Вы можете использовать метод hasOwnProperty метод:

if (ents.hasOwnProperty('7')) {
  //..
}

Этот метод проверяет, содержит ли объект указанное свойство независимо от его значения.

Это быстрее, чем оператор in потому что он не проверяет унаследованные свойства.

47
ответ дан 29 November 2019 в 20:03
поделиться

да, это возможно, но вам придется перебирать весь объект 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);
        });
2
ответ дан 29 November 2019 в 20:03
поделиться

В дополнение к тому, что 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
}

Также это не «многомерный массив». Это объект (с большим количеством вложенных объектов).

2
ответ дан 29 November 2019 в 20:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: