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

使用json.dumps时JSON文件无法格式化输出及不可序列化字典转字符串写入问题

解决JSON格式化输出失效的问题

嘿,我看你遇到JSON格式化的问题了——其实核心问题出在你构建数据的方式上,咱们一步步来捋清楚:

你的代码问题分析

你现在是把所有数据库和集合的信息拼接成了一个长字符串,然后用json.dumps()去序列化这个字符串。但JSON里的字符串本身就是单行的,哪怕你加了indent=4,也只会格式化JSON的顶层结构(这里顶层就是一个字符串),自然看不到你想要的分行缩进效果。而且你后面的json.loads(data)再返回,其实是把序列化后的JSON字符串又转成了普通字符串,完全没必要。

修复方案:用结构化数据替代字符串拼接

你应该把数据组织成JSON支持的结构(比如列表+字典),这样json.dumps()的indent参数才能生效,输出漂亮的格式化JSON。

修改后的代码如下:

data = []  # 初始化一个列表,用来存储结构化数据
for db_name in client.list_database_names(): 
    db = client[db_name] 
    for coll_name in db.list_collection_names(): 
        # 把每个数据库-集合对存成字典,添加到列表里
        data.append({
            "database_name": db_name,
            "collection_name": coll_name
        })
# 序列化结构化数据,用indent=4实现格式化
formatted_json = json.dumps(data, indent=4)
return formatted_json

为什么这样能行?

  • 现在data是一个包含多个字典的列表,属于JSON可直接序列化的结构
  • json.dumps(data, indent=4)会把这个列表和里面的字典都按缩进格式输出,每个数据库-集合对都会单独成行,结构清晰
  • 不需要default=str,因为所有数据都是字符串类型,天然可序列化

这样你写入JSON文件后,打开就能看到整齐的格式化效果啦~

内容的提问来源于stack exchange,提问作者ahjfoışsjhofeşsfn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 01:47:40