【问题标题】:Python string json.loads errorPython 字符串 json.loads 错误
【发布时间】:2012-03-24 14:43:08
【问题描述】:

两者有什么区别:

  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

【问题讨论】:

  • 我不熟悉json,但是该方法是否需要特定的输入字符串格式?
  • 请更正你的代码和异常信息——异常应该是NameError,因为你定义了s1两次,但是你没有定义s2。请更正您的代码,使其准确显示您所看到的内容。
  • @Ashish:好的,我已经更正并格式化了你的问题。

标签: python string json


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    json 引号不能像 Python 那样互换。

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

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

    【讨论】:

      猜你喜欢
      • 2018-08-23
      • 1970-01-01
      • 2017-11-28
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      • 2023-03-21
      相关资源
      最近更新 更多