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

通过 HTTP 请求使用 C# 读取 Json

nodejs 怎么获取post请求的json数据

AFNetworking 2.0 从故障块中的代码 400 获取 JSON

基于nodejs模拟浏览器post请求爬取json数据