JSON文本中的“=”符号会导致解析错误

时间:2012-11-19 17:42:43

标签: jquery json parsing equals sign

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

1 个答案:

答案 0 :(得分: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"}))