You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用json模块解析JSON数据遇JSONDecodeError求助

解决json.loads()抛出JSONDecodeError: Expecting property name enclosed in double quotes的问题

这个错误的核心原因是你从API获取的数据不符合标准JSON格式——JSON强制要求所有属性名(键)必须用双引号包裹,而你的数据大概率存在单引号代替双引号、语法错误(比如多余逗号),甚至根本不是JSON的情况。

排查与解决步骤:

  • 先打印原始响应内容,定位问题
    别直接解析,先把API返回的原始文本完整打出来,用repr()能显示转义字符和引号类型,方便排查:

    import requests
    resp = requests.get("你的API地址")
    # 打印原始内容,看清楚引号和格式
    print(repr(resp.text))
    

    错误提示line 1 column 2,重点看开头的字符,比如是不是{'name': 'xxx'}这种用单引号的伪JSON。

  • 针对性修复格式

    1. 如果是Python风格的单引号字典,用ast.literal_eval()替代json.loads(),它能兼容这种非标准格式:
      import ast
      data = ast.literal_eval(resp.text)
      
    2. 如果是混合引号的问题,用正则替换未转义的单引号为双引号(注意别替换值里的单引号):
      import re
      fixed_json = re.sub(r"(?<!\\)'", '"', resp.text)
      data = json.loads(fixed_json)
      
    3. 如果有多余的尾逗号(比如{"key": 1,}),ast.literal_eval()也能直接处理,不用额外修改。
  • 确认API返回的内容类型
    有些时候API返回的根本不是JSON——比如返回了HTML错误页面(404/500),或者Content-Type是text/plain。可以先检查响应头:

    print(resp.headers.get('Content-Type'))
    

    如果不是application/json,先确认API请求是否正确(比如参数、token是否有效)。

内容的提问来源于stack exchange,提问作者Yashashviiii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 13:37:09