12

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.

1
  • 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)) Commented Jul 11, 2017 at 9:01

2 Answers 2

38

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:

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.

Sign up to request clarification or add additional context in comments.

2 Comments

@robertklep Hey I tried this solution I am getting an error Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client. Can u please help?
@mamadgiaishwarya that issue is not strictly related to this question and my answer. If you have could code online somewhere, I'll have a look. Otherwise, search for that error here on SO to find out the cause of it.
7

Do change the line

schema = JSON.parse(data);

into

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

1 Comment

How would this help?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.