Json 当字符串末尾有 `\' 时,字符串无法解码

Json String can't decode when end of string have `\'

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

Ext.JSON.decode(): You're trying to decode an invalid JSON String

JSON解码错误:

Uncaught Ext.JSON.decode(): You're trying to decode an invalid JSON String:

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

如何避免上述错误?

那是无效的 JSON,因为 \ 字符转义了负责关闭字符串的 " 标记 - 因此,您的字符串保持未关闭状态(即,直到下一个 " 出现)。

所以你的问题是反斜杠在字符串中有特殊含义。如果您想使用斜杠,请改用 \。 (请注意,这样做是转义反斜杠字符本身。)

即:

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

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

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

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

来逃避你的 \
\Act

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