Unexpected end of json input in Node.js

Multi tool use
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