4
      "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 中的字符串中删除“=”符号时,一切都很好。我的用户需要能够在他们输入的文本中输入 = 符号。有没有解决的办法?

4

1 回答 1

6

看起来您正在输入换行符而不转义它。您需要转义反斜杠。

以下失败,因为您在 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"})) 
于 2012-11-19T17:47:43.563 回答