如何处理 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 ”。

当我在 \n 之后取出 sometext 时,两种情况下的错误都会消失。我不知道为什么 \n 使 evalJSON.parse 失败?

原文由 polarbear 发布,翻译遵循 CC BY-SA 4.0 许可协议
阅读 3.9k
2 个回答

这样应该可以满足你的需求:

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

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

原文由 BlaM 发布,翻译遵循 CC BY-SA 4.0 许可协议

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"}
原文由 Manish Singh 发布,翻译遵循 CC BY-SA 3.0 许可协议
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题