JSON.parse在JSON字符串中包含\n时会失败。

3

var jsonString = '{"htmluserresponse":"This is my firs \n test"}';
var jsonObj = JSON.parse(jsonString);
console.log("Test Response------" + jsonObj.htmluserresponse);

JSON.stringify() 实际上是创建了我传入的 jsonString 字符串,但是如果字符串含有 \n 字符,则 JSON.parse 会失败。

如何获取有效的字符串?


replace \n with \\n - Pranav C Balan
1个回答

3
你需要转义反斜杠:\\n

var jsonString = '{"htmluserresponse":"This is my firs \\n test"}';
var jsonObj = JSON.parse(jsonString);
console.log("Test Response------" + jsonObj.htmluserresponse);


这是一个HTML字符串,包含许多< ' " >字符,如果我使用JavaScript转义,整个JSON字符串的引号都会被转义。有没有一种方法只转义斜杠? - Jagan K
@JaganK 在现实生活中,你不需要这样做。如果你使用JSON.stringify将包含换行符的JavaScript对象转换为JSON字符串,系统会自动对其进行转义。但是,如果你希望手动创建JSON字符串(我不建议这样做),你可以始终使用类似于str.replace(/\n/g, '\\n')的方法仅转义换行符。 - VisioN
由于某些原因,JSON.stringify() 对我来说并没有起作用。 - Jagan K
@JaganK JSON.stringify 不应该转义您的特殊 HTML 字符,它只创建一个 JSON 字符串。如果您想同时实现这两个功能,则需要先转义您的 HTML 字符串,然后使用 JSON.stringify 创建一个 JSON 字符串。 - VisioN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接