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

如何用Python格式化JSON输出文件,避免过度紧凑或逐键换行

实现合适的JSON输出格式化

你可以结合indent和separators参数来平衡结构可读性与紧凑性,满足不同格式化需求:

方案1:顶级键值对换行+数组内部紧凑

如果希望JSON结构清晰(每个顶级键值对单独换行并缩进),同时数组元素保持紧凑无空格分隔,使用以下代码:

with open(output_file_path_final, 'w') as f:
    json.dump(final, f, indent=2, separators=(',', ': '))

输出效果示例:

{
  "frame.number":[80.0,87.0,93.0,95.0,99.0,...],
  "frame.timestamp [s]":[1324055659.394,1324055659.488,1324055659.607,...],
  "{31} EVSE Maximum Power Limit [W]":[null,null,null,...]
}
  • indent=2:为嵌套层级添加2个空格缩进,让顶级键值对自动换行,结构更清晰
  • separators=(',', ': '):指定数组/对象元素用逗号直接分隔(无空格),键与值之间用冒号加空格分隔,兼顾可读性与数组紧凑性

方案2:标准缩进格式化(数组元素换行)

如果希望所有层级保持标准缩进,数组元素也单独换行(适合元素较多的数组),直接使用indent参数即可:

with open(output_file_path_final, 'w') as f:
    json.dump(final, f, indent=2)

输出效果示例:

{
  "frame.number": [
    80.0,
    87.0,
    93.0,
    95.0,
    99.0,
    ...
  ],
  "frame.timestamp [s]": [
    1324055659.394,
    1324055659.488,
    ...
  ],
  "{31} EVSE Maximum Power Limit [W]": [
    null,
    null,
    ...
  ]
}

方案3:仅顶级键值对换行(特殊场景)

如果只需要顶级键值对换行,所有嵌套内容(包括数组)保持同一行,可以先序列化为紧凑格式再替换换行:

import json

# 生成紧凑格式字符串
compact_json = json.dumps(final, separators=(',', ':'))
# 替换顶级键前的逗号为逗号+换行+缩进
formatted_json = compact_json.replace(',"', ',\n  "')
# 给第一个键添加缩进
formatted_json = formatted_json.replace('{"', '{\n  "')
# 补全结尾换行
formatted_json = formatted_json.rstrip('}') + '\n}'

with open(output_file_path_final, 'w') as f:
    f.write(formatted_json)

此方法适合特殊需求,优先推荐方案1的参数控制方式,更稳定可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:53:22