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

json.dumps无法转换字典格式字符串 如何得到预期输出?

问题根因

  • 你误用了json模块的方法:json.dumps()的作用是将Python对象序列化为JSON格式字符串,传入字符串类型的参数只会得到被二次转义包裹的字符串,和你要实现的效果完全相反。你需要使用的是将JSON字符串反序列化为Python对象的json.loads()方法。
  • 你当前持有的test_string使用单引号包裹键和值,不符合JSON官方规范(JSON要求必须使用双引号标识字符串),直接调用json.loads()会抛出格式异常。

可行解决方案

方案1:替换引号后用json模块解析

适合字符串内容本身不包含单/双引号的简单场景:

import json

test_string = "{'fruit': ['Yes'], 'vegetables': ['carrot']}"
# 将单引号替换为符合JSON规范的双引号
formatted_str = test_string.replace("'", '"')
# 反序列化得到Python字典
res = json.loads(formatted_str)
print(res)
# 输出:{'fruit': ['Yes'], 'vegetables': ['carrot']}

方案2:使用ast.literal_eval解析(更推荐)

不需要提前处理引号,天然支持Python字面量格式的字符串解析,同时规避了直接使用eval()的安全风险:

import ast

test_string = "{'fruit': ['Yes'], 'vegetables': ['carrot']}"
res = ast.literal_eval(test_string)
print(res)
# 输出:{'fruit': ['Yes'], 'vegetables': ['carrot']}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:27:02