字典字符串转字典失败,使用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
相关产品推荐
相关产品推荐

