2016-01-22 2 views
0

У меня возникла проблема с получением некоторых полей JSON в NodeJS. Вот моя структура JSON:Получить конкретные поля в JSON

{ 
    "header": 
    { 
     "file1":0, 
     "file2":1, 
     "subfiles":{ 
      "subfile1":"true", 
      "subfile2":"true", 
     } 
    }, 

    "response": 
    { 
     "number":678, 
     "start":0, 
     "docs":[ 
      { 
       "id":"d3f3d", 
       "code":"l876s", 
       "country_name":"United States", 
       "city":"LA" 
      }, 
      { 
       "id":"d2f2d", 
       "code":"2343g", 
       "country_name":"UK", 
       "city":"London" 
      } 
     ] 
    } 
} 

Как получить доступ к определенным полям (идентификатор, город или COUNTRY_NAME) в структуре, как это? Я пытаюсь что-то в NodeJS, но я не могу получить конкретные поля.

request('http://url.com', function (error, res, body) { 
    if (!error && res.statusCode == 200) { 
    console.log(body) 
    } 

    res.on('data', function(chunk){ 
     body += chunk; 
    }); 

    res.on('end', function(){ 
     var urlResponse = JSON.parse(body); 
     console.log("Got a response: ", urlResponse.response.docs.city); 
    }); 
}); 
+1

У вас есть массив «Docs», так что вы должны будете выбрать один. – Joe

ответ

1

Попробуйте использовать с помощью data переменного аккумулировать свои куски, а затем data.toString(), чтобы заставить буферизованное содержимое в строку, которая будет распознаваем JSON.

Кроме того, вам необходимо получить доступ к определенному члену массива docs.

+0

Могу ли я использовать JSON.stringify (body) вместо toString()? – corry

+0

@corry вы можете попробовать это в своем коде: P –

+0

Нет, потому что содержимое буферизировано. Вам нужно будет преобразовать этот буферизованный контент в строку перед разбором как JSON. – Josh

1

Вы пробовали что-то вроде этого:

thatObject.response.docs.forEach((element) => { console.log(element.id); }); 

?

недвижимость доки является массивом, так что вы можете использовать функции: Foreach, или, или все, что вы хотите

+0

Я пытаюсь использовать 'for (var i = 0; i corry

+1

Эй! Похоже, вы используете модуль запроса? Я никогда не использовал его, но попробую что-то вроде этого: (как начать писать новую строку здесь ?;)) заменить 'data' на' body'. –

Смежные вопросы