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
相关产品推荐
相关产品推荐

