How do I handle newlines in JSON?

I’ve generated some JSON and I’m trying to pull it into an object in JavaScript. I keep getting errors. Here’s what I have:

var data = '{"count" : 1, "stack" : "sometextnn"}';
var dataObj = eval('('+data+')');

This gives me an error:

unterminated string literal

With JSON.parse(data), I see similar error messages: “Unexpected token ↵” in Chrome, and “unterminated string literal” in Firefox and IE.

When I take out the n after sometext the error goes away in both cases. I can’t seem to figure out why the n makes eval and JSON.parse fail.

Answer

This is what you want:

var data = '{"count" : 1, "stack" : "sometext\n\n"}';

You need to escape the in your string (turning it into a double-), otherwise it will become a newline in the JSON source, not the JSON data.