我得到这个对象:{a:"a\r\na", b:"b\r\nb"}
。我使用JSON.stringify()
从对象创建一个字符串,但是我得到的输出是:
"{
"a": "a\r\na",
"b": "b\r\nb"
}"
我真正想要的是:
"{
"a": "a
a",
"b": "b
b"
}"
我该怎么做?
答案 0 :(得分:0)
mozilla文档(请参阅" Issue with plain JSON.stringify for use as JavaScript")似乎直接解决了这个问题:
function jsFriendlyJSONStringify (s) {
return JSON.stringify(s).
replace(/\u2028/g, '\\u2028').
replace(/\u2029/g, '\\u2029');
}
<强>更新强>
在下面的OP和贡献者的帮助下,
function jsFriendlyJSONStringify (s) {
return JSON.stringify(s).
replace(/\\r/g, '\r').
replace(/\\n/g, '\n')
}
提供了更通用的解决方案。
答案 1 :(得分:0)
这实际上取决于您显示这些值的浏览器,编辑器或文本字段。如果您在网站上显示,则可以用<br>
替换CR / LF。
此外,Windows在MS Office Excel文件中使用CR / LF,而Mac上的MS Office Excel仅使用\n
(新行)。
tl; dr:您无法在不更改实际内容的情况下更改显示“样式”。