Python中json.loads转换含两组{}的JSON字符串为dict报错如何解决
问题根因
你使用的字符串不符合JSON规范:
- 顶层存在两个用逗号分隔的独立
{}对象,合法JSON只能有一个顶层结构(对象/数组/基础值) - 字符串中的
"是HTML转义后的双引号,需要先还原才能正常解析
解决方案
方案1:解析为字典列表(保留两个独立对象)
如果需要分开保留两组键值,给字符串外层加方括号包裹为JSON数组即可,示例代码:
import json import html # 原字符串 test = '{"124074": "0.0944", "124111": "0.0809", "124194": "0.0788"}, {"128213": "0.39", "129043": "0.458", "129054": "0.378"}' # 还原HTML转义 raw_str = html.unescape(test) # 外层加方括号转为合法JSON数组 legal_json = f"[{raw_str}]" # 解析得到两个字典组成的列表 dict_list = json.loads(legal_json) # 遍历所有键值 for item in dict_list: for key, value in item.items(): print(key, value)
方案2:合并为单个字典
如果需要把两组键值整合到同一个字典里,解析后合并即可:
# 接方案1的解析结果 merged_dict = {} for item in dict_list: merged_dict.update(item) # Python 3.9+ 可直接用合并运算符 # merged_dict = dict_list[0] | dict_list[1]
注意事项
若两个原始对象存在重复的键,合并时后出现的键值会覆盖先出现的,可根据业务需求调整合并逻辑。
内容的提问来源于stack exchange,提问作者ajster
相关产品推荐
相关产品推荐

