Unexpected end of json input in Node.js
Unexpected end of json input in Node.js
I have Json data which I receive it as post data in my node.js server.
But the problem is, its not able to parse the string I sent.Here is my node.js server code.
res.header("Access-Control-Allow-Origin", "*");
req.on('data',function(data)
{
var done=false;
console.log(data);
var schema;
schema=JSON.parse(data);
}
Here I get the error when I parse the json data(data).
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)
I verified JSON data using JSONLint for syntax errors.But it was absolutely fine. I dont know what's wrong and how to correct it.
2 Answers
2
data events can be fired multiple times, so you have to collect all the data values and concatenate them together when the end event has fires:
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);
...
});
However, perhaps you should consider using body-parser.
body-parser
Do change the line
schema = JSON.parse(data);
into
schema = JSON.parse(JSON.stringify(data));
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
try to JSON.stringify first and then check whether it is actually in the right format ? If yes then try this : JSON.parse(JSON.stringify(data))
– Aakash Uniyal
Jul 11 '17 at 9:01