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

字典字符串转字典失败,使用json.loads()与ast.literal_eval均报错求解决

问题根因

你给出的字符串有两处不符合解析要求的问题:

  • 字符串中所有的"是HTML转义后的实体字符,json.loads和ast.literal_eval都无法直接识别该格式,需要先还原为标准双引号。
  • FilterString和OrderString两个字段的空值使用了单引号''包裹,JSON语法强制要求字符串必须用双引号包裹,直接解析会触发语法错误。

解决代码

import html
import json
import ast

text = '{"data":{"FormId":"BD_Rate","TopRowCount":0,"Limit":0,"StartRow":0,"FilterString":'',"OrderString":'',"FieldKeys":"FRateID,FDocumentStatus,FForbidStatus,FName,FDescription,FCreateOrgId,FUseOrgId,FCreatorId,FModifierId,FCreateDate,FModifyDate,FBegDate,FCyToID,FEndDate,FRATETYPEID,FCyForID,FAuditDate,FAuditorID,FForbidderID,FForbidDate,FIsSysPreset,FExchangeRate,FReverseExRate"}}'

# 先转义HTML实体,再把单引号空值替换为双引号空值
processed_text = html.unescape(text).replace("''", '""')

# 方法1:用json.loads解析
dict1 = json.loads(processed_text)

# 方法2:用ast.literal_eval解析
dict2 = ast.literal_eval(processed_text)

两种方法解析后都可以得到符合要求的字典对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:15:02