当字符串结尾有'\'时,Json String无法解码

时间:2015-04-08 11:27:43

标签: javascript json decode extjs4.2

当JSON字符串在任何字符串的末尾都有\时,它会给我:

  

Ext.JSON.decode():您正在尝试解码无效的JSON字符串

JSON解码错误:

  

Uncaught Ext.JSON.decode():您正在尝试解码无效的JSON   字符串:

[{"ID1":"1","ID2":"1","NAME":"Act\"},{"ID1":"3","ID2":"1","NAME":"Act\"},{"ID1":"4","ID2":"2","NAME":"act $#%^&&*"},{"ID1":"2","ID2":"2","NAME":"act $#%^&&*"}]

如何避免上述错误?

3 个答案:

答案 0 :(得分:2)

这是无效的JSON,因为\字符会转义负责关闭字符串的"标记 - 因此,您的字符串保持未闭合状态(即直到下一个{{1}来了)。

所以你的问题是反斜杠在字符串中有特殊含义。如果要使用斜杠,请改用"。 (注意,它的作用是逃避反斜杠字符本身。)

即:

\\

答案 1 :(得分:1)

你需要逃避反斜杠。最初我认为你只需要使用一个转义字符,但是,according to this demonstration,你需要使用三个:

{"ID1":"1","ID2":"1","NAME":"Act\\\\"}

答案 2 :(得分:0)

如果你测试你的JSON,你会发现它无效:http://jsonlint.com/ 你需要用另一个\

来逃避你的\
\\Act

您应该在之前对JSON进行编码,或者尽可能手动进行编码。