有什么区别:
s1 = '["a"]'
s2 = "['a']"
当我执行json.loads
时,s2
出现以下错误,但s1
没问题:
>>> s1='["a2"]'
>>> s2="['a2']"
>>> json.loads(s1)
[u'a2']
>>> json.loads(s2)
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
答案 0 :(得分:7)
问题是 JSON使用双引号("
)来引用值,而不是单引号('
)。
这意味着由于JSON无效而引发异常:
['a']
["a"]
下面也是正确的例子,与你的不同:
>>> import json
>>> s1 = "['a']"
>>> s2 = '["a"]'
>>> json.loads(s1)
... some traceback removed ...
ValueError: No JSON object could be decoded
>>> json.loads(s2)
[u'a']
编辑:我已经更新了问题,OP必须看到正确的输出,而不是他/她发布的内容(json.loads('["a2"]')
没有抛出错误,json.loads("['a2']")
是)
答案 1 :(得分:3)
json引号不像Pythons那样可以互换。
>>> import json
>>> print json.dumps("['a']")
"['a']"
>>> print json.dumps('["a"]')
"[\"a\"]"
在第二种情况下,"
需要转义