Python字符串json.loads错误

时间:2012-03-07 03:04:49

标签: python string json

有什么区别:

  1. s1 = '["a"]'

  2. s2 = "['a']"

  3. 当我执行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
    

2 个答案:

答案 0 :(得分:7)

问题是 JSON使用双引号(")来引用值,而不是单引号(')。

这意味着由于JSON无效而引发异常:

  • 这是无效的JSON:['a']
  • 这是有效的JSON:["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\"]"

在第二种情况下,"需要转义