Python字符串json.loads

2024-06-06 18:27:10 发布

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

以下两者之间的区别是什么:

  1. s1 = '["a"]'

  2. 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

Tags: nojsona2object错误becoulddecoded
2条回答

json引号不像Python那样可以交换。

>>> import json
>>> print json.dumps("['a']")
"['a']"
>>> print json.dumps('["a"]')
"[\"a\"]"

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

问题是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']")是)。

相关问题 更多 >