JSON.parse在字符串中给出了换行符的异常

时间:2016-06-14 11:39:53

标签: javascript json node.js string

我收到以下字符串:

var str='{"message":"hello\nworld"}';

我需要把它变成JSON对象。但是,由于JSON.parse(str)

,我在尝试\n时遇到异常

我看到this问题,但没有帮助。

从那以后,我试过了 var j=JSON.parse(JSON.stringify(str))

但是当我使用typeof j

时,我仍然会收到字符串而不是对象

我知道使用\\n有效,但问题是,当我需要使用该值时,它不会在新行上打印。

更新:好的,我刚刚意识到\\n正在运作。 我使用此功能将\n转换为\\n

var str='{"message":"hello\nworld"}';
str=str.replace(/\n/g, "\\\\n").replace(/\r/g, "\\\\r").replace(/\t/g, "\\\\t");

var json=JSON.parse(str);

console.log(json.message);

有人可以纠正吗?

1 个答案:

答案 0 :(得分:1)

\n转移到\\n是正确的做法。在您的代码中,替换调用错误。你需要更少的斜杠。更新了您的代码:

var str='{"message":"hello\nworld"}';
str=str.replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t");

var json=JSON.parse(str); //No errors due to escaping

现在打印它,你会看到文本被分成不同的行。

console.log(json.message);