HTTP请求的响应无法从字符串转换为JSON

HTTP请求的响应无法从字符串转换为JSON,json,http,Json,Http,这是http.request的函数,如下所示: var post_req =http.request(options,function(res){ console.log('STATUS:'+res.statusCode); console.log('HEADERS: '+JSON.stringify(res.headers)); var str =''; res.setEncoding('utf8'); res.on('data',function (c

这是http.request的函数,如下所示:

var post_req =http.request(options,function(res){
    console.log('STATUS:'+res.statusCode);
    console.log('HEADERS: '+JSON.stringify(res.headers));
    var str ='';
    res.setEncoding('utf8');
    res.on('data',function (chunk){
        str += chunk;

    });
    res.on('end',function(){
        console.log("message="+str);
    });
    res.on('error',function(e){

    });
    var token= JSON.parse(str);
    console.log(token);
这是我从控制台得到的错误,有人能告诉我我的代码出了什么问题吗

undefined:0

^
SyntaxError: Unexpected end of input
    at Object.parse (native)
    at ClientRequest.<anonymous> (/Users/guojiaqi/Documents/workspace/ejs/APIintegration.js:27:18)
    at ClientRequest.g (events.js:180:16)
    at ClientRequest.emit (events.js:95:17)
    at HTTPParser.parserOnIncomingClient [as onIncoming] (http.js:1692:21)
    at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23)
    at CleartextStream.socketOnData [as ondata] (http.js:1587:20)
    at CleartextStream.read [as _read] (tls.js:513:12)
    at CleartextStream.Readable.read (_stream_readable.js:340:10)
    at EncryptedStream.write [as _write] (tls.js:368:25)
未定义:0
^
SyntaxError:输入意外结束
at Object.parse(本机)
在ClientRequest。(/Users/guojiaqi/Documents/workspace/ejs/apintegration.js:27:18)
在ClientRequest.g(events.js:180:16)
在ClientRequest.emit(events.js:95:17)
在HTTPParser.parserOnIncomingClient[作为onIncoming](http.js:1692:21)
在HTTPParser.parserOnHeadersComplete[作为onHeadersComplete](http.js:121:23)
在CleartextStream.socketOnData[as ondata](http.js:1587:20)
在CleartextStream.read[as_read](tls.js:513:12)
在CleartextStream.Readable.read(_stream_Readable.js:340:10)
在EncryptedStream.write[as_write](tls.js:368:25)

您的
str
变量为空,因为您正在使用事件处理程序从网络流读取数据,但在开始使用
str
执行操作时,您没有等待这些处理程序完成。将
JSON.parse(str)
移动到
res.on('end',…)
的内部,以便在下载完成后可以解析JSON。

str变量是否为空?看起来您正在使用事件处理程序从网络流读取数据,但在使用
JSON.parse()
时,您不会等待这些处理程序完成。也许将
JSON.parse(str)
移动到
res.on('end',…)
。谢谢,我稍后再试on@Pluto谢谢,伙计,成功了,请回答这个问题,这样我就可以给你支票了。