JavaScript和python2.7中JSON字符串中的转义反斜杠

2024-09-30 18:18:22 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是要加载或解析的JSON字符串:

json_str = '[{"executable_path": "C:\\GCafeClient\\CafeClient.exe", "arguments": "-package 100003"}]'

如果我测试它in json formatterhere,这是有效的(这也是有意义的——我已经跳过了反斜杠)。在

但是当我在python2.7中使用json.loads(json_str)或者在Chrome中使用JavaScript中的JSON.parse(json_str)时。我有错误:

^{pr2}$

以及

Uncaught SyntaxError: Unexpected token G

如果我这样说的话,这两种方法都适用:

json_str = '[{"executable_path": "C:\\\\GCafeClient\\\\CafeClient.exe", "arguments": "-package 100003"}]'

为什么会这样?在


Tags: path字符串injsonpackagehereformatterexe
2条回答

我将在这里发表我对这个问题的理解:

# python
json_str = '[{"executable_path": "C:\\\\GCafeClient\\\\CafeClient.exe", "arguments": "-package 100003"}]'
# which is equivalent to
json_str = r'[{"executable_path": "C:\\GCafeClient\\CafeClient.exe", "arguments": "-package 100003"}]'
# and JSON format requires backslash to be escaped

您需要两次转义“\”,第一次是Python/JavaScript文本,第二次是JSON。在

因此"C:\\GCafeClient"将计算为"C:\GCafeClient",这是不可接受的JSON,因为它包含一个未转义的'\',并将抛出一个错误。在

另一方面,"C:\\\\GCafeClient"将对JSON求值为"C:\\GCafeClient",因此转义并接受“\”。在

相关问题 更多 >