这是我要加载或解析的JSON字符串:
json_str = '[{"executable_path": "C:\\GCafeClient\\CafeClient.exe", "arguments": "-package 100003"}]'
如果我对in json formatter或here进行测试,则这是有效的(也很有意义-我已经转义了反斜杠。
但是当我在Python 2.7中执行
json.loads(json_str)
或在Chrome中的JavaScript中执行JSON.parse(json_str)
时。我有错误:ValueError: Invalid \escape: line 1 column 25 (char 24)
和
Uncaught SyntaxError: Unexpected token G
如果我这样说的话,它将对两个都起作用:
json_str = '[{"executable_path": "C:\\\\GCafeClient\\\\CafeClient.exe", "arguments": "-package 100003"}]'
为什么会这样呢?
最佳答案
您需要两次对'\'进行转义,第一次是使用Python / JavaScript文字,第二次是JSON。
因此"C:\\GCafeClient"
的计算结果为"C:\GCafeClient"
,这是不接受的JSON,因为它包含未转义的'\'并会引发错误。
另一方面,"C:\\\\GCafeClient"
将评估为JSON为"C:\\GCafeClient"
,因此'\'被转义并被接受。