2016-10-29 4 views
2

Я использую Jira API для получения данных о единичных билетах. Я успешно настроил HTTP-запрос GET на сервер и может отображать данные на консоли, но мне в идеале нужно получить определенные свойства из данных, которые находятся в формате JSON.Nodejs читает данные JSON из запроса http-запроса

Когда я пытаюсь прочитать свойства, я просто получаю undefined.

var req = http.request(options, function(res) { 
console.log('STATUS: ' + res.statusCode); 
console.log('HEADERS: ' + JSON.stringify(res.headers)); 
res.setEncoding('utf8'); 
res.on('data', function (chunk) { 
    console.log('BODY: ' + chunk);   // This displays the JSON 
    console.log('endSTATUS: ' + chunk.id); // This shows up undefined 
});  

Данные находятся в формате this от JIRA API для справки. Первый консольный журнал в res успешно отображает все данные из куска. Второй является:

endSTATUS: undefined 

ответ

2

Убедитесь, что вы разбор данные ответа в формате JSON. Я думаю, вам может понадобиться что-то вроде var data = JSON.parse(chunk);, и ссылаться на данные куска как data.value.

res.on('data', function (chunk) { 
var data = JSON.parse(chunk); 
console.log('BODY: ' + data);   
console.log('endSTATUS: ' + data.id); 
}); 
+0

Отлично, что сработало, не удалось найти что-либо в документации на куски, спасибо! – Dom

+0

Случается ко мне все время, счастливая кодировка! – arbybruce

4

Постарайтесь получить тело после окончания потока данных. Например:

 var body = ''; 
     response.on('data', function(d) { 
      body += d; 
     }); 
     response.on('end', function() { 

      // Data reception is done, do whatever with it! 
      var parsed = JSON.parse(body); 
      console.log('endSTATUS: ' + parsed.id); 
     }); 
+0

спасибо, что поделились этим –