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

使用json.loads转双引号包裹的字符串字典为普通字典时出现JSONDecodeError怎么办

JSONDecodeError 报错原因
  • 标准JSON语法强制要求所有属性名、字符串类型值必须使用双引号包裹,你当前的contract_details字符串使用的是单引号,不符合JSON格式要求
  • 字符串中包含Python专属的nan空值标识,不属于JSON支持的标准数据类型,也会触发解析异常

报错截图:
报错截图

最优解决方案

使用Python标准库的ast.literal_eval进行解析,该方法专门用于解析Python字面量格式的字符串,天然支持单引号、nan这类Python专属语法,且只会解析字面量不会执行任意代码,安全性有保障:

import ast

# 原有获取字段逻辑不变
contract_details = current_order["contract_details"]
# 替换json.loads为ast.literal_eval即可
contract_details = ast.literal_eval(contract_details)
备用方案(仅适用于确认字符串无嵌套单引号的场景)

如果必须使用json.loads解析,可以先对字符串做格式兼容处理:

import json

contract_details = current_order["contract_details"]
# 先将单引号替换为双引号,同时将nan替换为JSON支持的null标识
processed_str = contract_details.replace("'", '"').replace('nan', 'null')
contract_details = json.loads(processed_str)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:54:02