2015-07-21 5 views
0

Прочитав различные методы, пожалуйста, несите меня, чтобы попытаться объяснить.JSON цикл многомерный массив с node.js

Я пытаюсь получить данные из twitch api и зацикливать результаты user.name на массив, возможно, внутри объекта. Я использую nodejs, поэтому он должен быть javascript.

Пока я запускаю следующее, я получаю приятный ответ json.

var request = require('request'); 

    request({url: 'https://api.twitch.tv/kraken/channels/twitch/follows?limit=3'}, function(err, res, json) { 
     if (err) { 
      throw err; 
     } 

     console.log(json); 

    }); 

это затем входит так же, как если бы тот, где посетить https://api.twitch.tv/kraken/channels/twitch/follows?limit=3

или лучше визуализируются как

json structure

Теперь я хочу, чтобы выбрать следующим образом: -> Пользователь -> имя объекта , Более того, зациклируйте каждый пользователь -> имя в ответе.

Я думал, что нужно преобразовать строку в объект, поэтому я попытался

var obj = JSON.parse(json); 

но возвращает только первые {3} объектов в дереве. Так что я пошел вперед и попытался

var request = require('request'); 

    request({url: 'https://api.twitch.tv/kraken/channels/twitch/follows?limit=3'}, function(err, res, json) { 
     if (err) { 
      throw err; 
     } 

     for (var i=0; i<json.length; i++) { 

     var obj = JSON.parse(json.follows[i].user.name); 
     console.log(obj); 

     } 

    }); 

и возвращает

TypeError: Cannot read property '0' of undefined 

Для тестирования я избавилась от петли и просто 1 вернуть один бит информации. Попробовав несколько экземпляров переупорядочения вызова, я всегда получаю либо ошибку, либо «неопределенное» обратно.

Ничего похожего не работает, я даже собираюсь поступить правильно?

ответ

1

Как JSON является объектом здесь, мы должны использовать для в хотя нет длина имущество. Но здесь json.follows - массив. Поэтому мы должны использовать цикл.

var len = json.follows.length; 
for (var i=0; i< len; i++) { 
    console.log(json.follows[i].user.name); 
} 
+0

'follow' - это массив - используйте регулярный цикл' for' для массивов. – tymeJV

+0

yes ... для следующих мы можем использовать регулярный цикл.Но для json, который является объектом, мы должны использовать для ..in. Я уточню свой ответ. – jrath

+0

Я получаю TypeError: Не могу прочитать значение «длина длины» неопределенного, то же самое, что и приведенный выше ответ. Не знаете, как это происходит? – ServerSideSkittles

3

Цикл по json.followers.length - не json.length - json является объектом, и объекты не имеют длину:

for (var i=0; i<json.follows.length; i++) { 
+0

Так простой, но настолько эффективны. – Lansana

+0

Кажется, я получаю TypeError: Не могу прочитать свойство length для undefined при попытке этого. – ServerSideSkittles

+0

full edit: for (var i = 0; i ServerSideSkittles

0

Предположив вы var obj = JSON.parse(json);

for (var j = 0; j < obj.follows.length; j++) { 
    var thisName = jsonObj.follows[j].user.name; 
    console.log(thisName); 
} 
Смежные вопросы