"Cost to Implement \nRate 5 to 1\nHigh = 5\nLow = 1"
作为 JSON 的一部分,在 jsonlint 中解析得很好,但在 Chrome 中使用以下任何一种方法都会失败(每种方法单独尝试):
sections = $.parseJSON(myJSONstr);
sections = JSON.parse(myJSONstr);
sections = eval('(' + myJSONstr + ')');
当我从 JSON 中的字符串中删除“=”符号时,一切都很好。我的用户需要能够在他们输入的文本中输入 = 符号。有办法解决这个问题吗?
最佳答案
看起来您正在输入换行符而没有转义它。您需要转义反斜杠。
以下操作失败,因为您要在 JSON 中输入原始换行符,必须对它们进行转义
var obj = JSON.parse('{"prop": "Cost to Implement \nRate 5 to 1\nHigh = 5\nLow = 1"}');
转义反斜杠
// Works fine
var obj = JSON.parse('{"prop": "Cost to Implement \\nRate 5 to 1\\nHigh = 5\\nLow = 1"}');
请注意,如果您正确序列化 JSON 对象,这些新行(以及必须转义的其他字符,如制表符、退格键...)将自动转义。例如
// Correctly parses the new line
JSON.parse(JSON.stringify({prop: "Line1\nLine2\tAfterTab"}))
关于jquery - "="登录 JSON 文本导致解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13459227/