代码之家  ›  专栏  ›  技术社区  ›  Nikko

json.decoder.JSONDecodeError:应为值:,json.decoder.JSONDecodeError:应为用双引号括起来的属性名:

  •  0
  • Nikko  · 技术社区  · 6 年前

    嗨,我在Python的文件中使用JSON:

    import json
    userData = '''[
    {
        "userID" : "20",
        "devices" : {
            "360020000147343433313337" : "V33_03",
            "3f0026001747343438323536" : "Door_03",
            "170035001247343438323536" : "IR_06",
            "28004c000651353530373132" : "BED_17"
        }
    },
    
    ]'''
    
    info = json.loads(userData)
    

    加载时出现此错误: json.decoder.JSONDecodeError:应为值:

    或者有时当我添加一些内容时: json.decoder.JSONDecodeError:要求属性名用双引号括起来:

    3 回复  |  直到 6 年前
        1
  •  3
  •   Rakesh    6 年前

    尝试使用 ast 模块

    前任:

    import ast
    userData = '''[
    {
        "userID" : "20",
        "devices" : {
            "360020000147343433313337" : "V33_03",
            "3f0026001747343438323536" : "Door_03",
            "170035001247343438323536" : "IR_06",
            "28004c000651353530373132" : "BED_17"
        }
    },
    ]'''
    
    info = ast.literal_eval(userData)
    print(info)
    
        2
  •  1
  •   Samuel Chen    6 年前

    看起来格式不正确。

    userData = '''[
    {
        "userID" : "20",
        "devices" : {
            "360020000147343433313337" : "V33_03",
            "3f0026001747343438323536" : "Door_03",
            "170035001247343438323536" : "IR_06",
            "28004c000651353530373132" : "BED_17"
        }
    },  <--- remove this ","
    
    ]'''
    

    看我的测试:

    >>> import json
    >>> json.loads('[{"a":"b"}]')
    [{u'a': u'b'}]
    >>> json.loads('[{"a":"b"},]')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "C:\Python27\lib\json\__init__.py", line 338, in loads
        return _default_decoder.decode(s)
      File "C:\Python27\lib\json\decoder.py", line 366, in decode
        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
      File "C:\Python27\lib\json\decoder.py", line 384, in raw_decode
        raise ValueError("No JSON object could be decoded")
    ValueError: No JSON object could be decoded
    >>>
    
        3
  •  1
  •   Mark Loyman    5 年前

    下面介绍如何获取JSON内容或获取一些垃圾邮件,以供以后参考:

    import requests
    
    
    url = 'http://httpbin.org/status/200'
    r = requests.get(url)
    
    if 'json' in r.headers.get('Content-Type'):
        js = r.json()
    else:
        print('Response content is not in JSON format.')
        js = 'spam'
    
        4
  •  0
  •   Patrick    6 年前

    以你的例子为例,没有进一步的理解: info = json.loads(json.dumps(userData)) 会有用的。

    有很多关于python多行字符串和JSON的文章。理想情况下,您不会从字符串变量加载字符串,这是您将看到的一般注释。

    有了一些额外的解释,比如数据的来源和格式,我可以提供额外的帮助。

    推荐文章