如何在JSON中处理换行符?

30 浏览
0 Comments

如何在JSON中处理换行符?

我生成了一些JSON并且试图将它拉入JavaScript对象中。我一直得到错误。这是我所拥有的:

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

这给我一个错误:

unterminated string literal

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

当我在sometext后面删除\\n时,两种情况下的错误都消失了。我似乎无法弄清楚为什么\\n会让evalJSON.parse失败。

admin 更改状态以发布 2023年5月21日
0
0 Comments

如果data不是一个字符串字面量,你需要有一个函数将\n替换为\\n

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"}

0
0 Comments

这就是你想要的:

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

在你的字符串中需要转义\(将其变成双重\),否则它将成为JSON源中的换行符而不是JSON数据。

0