2016-02-03 10 views
0

Итак, я знаю, как читать «одноуровневый» json-массив. Однако я не могу понять, как индексировать значение, которое я хочу, из многоуровневого массива json.Как читать многоуровневый json

У меня есть этот JSON данные:

{ 
    "items": [ 
     { 
      "snippet": { 
       "title": "YouTube Developers Live: Embedded Web Player Customization" 
      } 
     } 
    ] 
} 

Я хотел бы получить доступ к значению заголовка, однако ни один из них получить доступ к значению, но вместо того, чтобы вернуть неопределенными:

console.log(data["items"][0].title);

или :

console.log(data["items"][0]["title"]);

Но этот код возвращает объект snippet:

console.log(data["items"][0]);

Переменная data относится к данным JSon.

Как мне это сделать?

ответ

5

Попробуйте это:

data.items[0].snippet.title 

Объяснение (вы можете увидеть соответствующий объект /* */ комментарий):

items[0]; 
/* 
{ 
    'snippet': { 
     'title': 'YouTube Developers Live: Embedded Web Player Customization' 
    } 
} 
*/ 

items[0].snippet; 
/* 
{ 
    'title': 'YouTube Developers Live: Embedded Web Player Customization' 
} 
*/ 

items[0].snippet.title; 
/* 
'YouTube Developers Live: Embedded Web Player Customization' 
*/ 
+0

Это отлично поработало, спасибо! Так были ли элементы [0] доступ к таблице, содержащей фрагмент, er? – Conash

+0

@Conash см. Мое обновление, я надеюсь, что это поможет. – madox2

+0

@Conash в дополнение к моему ответу, 'data.items' совпадает с' data ["items"] ' – madox2

1

В дополнение к ответу madox2, вот это объяснение:

{ 
    "items": [ 
     { 
     "snippet": { 
      "title": "YouTube Developers Live: Embedded Web Player Customization" 
     } 
    } 
    ] 
} 

Корень - это объект, а items - это массив. Объекты окружены фигурными фигурными скобками, а массивы окружены квадратными скобками.

В JS, вы можете получить доступ к такому объекту:

parent.child 

В вашем случае, если предположить, вам данные, присваиваются переменным с именем data, вы бы получить доступ к нему с именем переменным и объектом, который вы хотят получить:

data.items 

массива имеют ключи - если не указаны ключи, ключи будут номер на базе.

Так что, видя, что items представляет собой массив без указания указанного ключа, вам нужно получить доступ к x-му элементу. x в вашем случае 0, потому что это первый элемент массива (помните, что массивы нулевой индексируются):

data.items[0] 

И здесь снова есть объект, поэтому доступ к нему:

data.items[0].snippet.title 
Смежные вопросы