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 进行编码,或者尽可能手动进行编码。
当 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 进行编码,或者尽可能手动进行编码。