Nodejs 从 http 请求块中读取 JSON 数据
Posted
技术标签:
【中文标题】Nodejs 从 http 请求块中读取 JSON 数据【英文标题】:Nodejs read JSON data from a http request chunk 【发布时间】:2017-03-12 06:50:42 【问题描述】:我正在使用 Jira API 来获取单张工单的数据。我已经成功地向服务器设置了一个 http GET 请求,并且可以将数据显示到控制台,但是理想情况下,我需要从 JSON 格式的数据中获取某些属性。
当我尝试读取属性时,我只是未定义。
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
);
数据为来自jira API 的this 格式供参考。 res 中的第一个控制台日志成功显示了块中的所有数据。 第二个是:
endSTATUS: undefined
【问题讨论】:
【参考方案1】:尝试在数据流完成后获取正文。像这样:
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);
);
【讨论】:
2021年还能用。谢谢分享! .on('end'... )【参考方案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);
);
【讨论】:
效果很好,在有关块的文档中找不到任何内容,谢谢! 一直发生在我身上,快乐的编码!以上是关于Nodejs 从 http 请求块中读取 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章
从 PHP 中的 JSON POST 读取 HTTP 请求正文的问题
NodeJs 在 http 和 fetchjsonp 之间处理 json