Node.js中json输入的意外结束

时间:2017-07-11 08:56:05

标签: json node.js express npm

我有Json数据,我在node.js服务器中将其作为发布数据接收。

但问题是,它无法解析我发送的字符串。这是我的node.js服务器代码。

res.header("Access-Control-Allow-Origin", "*");
  req.on('data',function(data)
  {
    var done=false;
    console.log(data);
    var schema;

    schema=JSON.parse(data);
   }

在解析json数据(数据)时,我收到错误。

undefined:776



SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at IncomingMessage.<anonymous> (/Users/as6/Documents/test/server.js:206:17)
    at emitOne (events.js:115:13)
    at IncomingMessage.emit (events.js:210:7)
    at IncomingMessage.Readable.read (_stream_readable.js:462:10)
    at flow (_stream_readable.js:833:34)
    at resume_ (_stream_readable.js:815:3)
    at _combinedTickCallback (internal/process/next_tick.js:102:11)
    at process._tickCallback (internal/process/next_tick.js:161:9)

我使用JSONLint验证了JSON数据的语法错误。但它绝对没问题。我不知道什么是错的以及如何纠正它。

2 个答案:

答案 0 :(得分:8)

data个事件可以多次次被触发,因此您必须收集所有data值,并在end事件触发时将它们连接在一起:

let chunks = [];

req.on('data', function(data) {
  chunks.push(data);
}).on('end', function() {
  let data   = Buffer.concat(chunks);
  let schema = JSON.parse(data);
  ...
});

但是,您可以考虑使用body-parser

答案 1 :(得分:3)

请更改行

schema = JSON.parse(data);

进入

schema = JSON.parse(JSON.stringify(data));