如何处理 JSON 中的换行符?

2022-08-29 23:31:50

我已经生成了一些JSON,并且我正在尝试将其拉入JavaScript中的对象中。我不断收到错误。以下是我所拥有的:

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

这给了我一个错误:

unterminated string literal

使用,我看到类似的错误消息:Chrome中的“”,Firefox和IE中的“”。JSON.parse(data)Unexpected token ↵unterminated string literal

当我拿出后错误消失后在这两种情况下。我似乎无法弄清楚为什么会成功和失败。\nsometext\nevalJSON.parse


答案 1

这是你想要的:

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

您需要对字符串中的 进行转义(将其转换为双引号),否则它将成为 JSON 源中的换行符,而不是 JSON 数据。\\


答案 2

您将需要有一个函数,该函数在不是字符串文本的情况下替换到。\n\\ndata

function jsonEscape(str)  {
    return str.replace(/\n/g, "\\\\n").replace(/\r/g, "\\\\r").replace(/\t/g, "\\\\t");
}

var data = '{"count" : 1, "stack" : "sometext\n\n"}';
var dataObj = JSON.parse(jsonEscape(data));

结果将是dataObj

Object {count: 1, stack: "sometext\n\n"}