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

使用Python 3.7合并多个JSON文件时格式保留问题求助

合并多个JSON文件并保留格式的解决方案

问题分析

你的代码只是简单拼接所有JSON文件的文本内容,会导致两个核心问题:

  • 生成的文件不是合法JSON(除非每个原文件都是同一数组的片段),无法被JSON解析工具正常读取;
  • 若原文件末尾无换行,多个文件的内容会直接连在一起,导致所有内容挤在同一行。

解决方案

方案1:生成合法格式化的JSON数组(推荐)

这个方法会将每个JSON文件的内容解析为Python对象,合并成一个数组后,再以格式化的方式写入新文件,既保证JSON合法性,又保留清晰的排版:

import glob
import json

merged_data = []
for file_path in glob.glob("*.json"):
    with open(file_path, "r", encoding='utf-8') as infile:
        # 解析单个JSON文件内容
        json_content = json.load(infile)
        merged_data.append(json_content)

# 写入合并后的文件,indent参数控制缩进,ensure_ascii=False保留中文
with open("merged_file.json", "w", encoding='utf-8') as outfile:
    json.dump(merged_data, outfile, ensure_ascii=False, indent=4)
  • 效果:每个原JSON的内容会作为数组的一个元素,以缩进4格的格式排版,每个元素独立成行,结构清晰且符合JSON规范。

方案2:原样拼接文本(仅用于查看内容,不保证JSON合法性)

如果只是需要将每个文件的内容原样拼接,保留原文件的换行格式,可在每个文件内容后添加换行/空行分隔:

import glob

content_list = []
for file_path in glob.glob("*.json"):
    with open(file_path, "r", encoding='utf-8') as infile:
        content_list.append(infile.read())
        # 添加空行分隔不同文件的内容,可根据需求调整
        content_list.append("\n\n")

with open("merged_file.json", "w", encoding='utf-8') as outfile:
    outfile.writelines(content_list)
  • 注意:这种方式生成的文件如果每个原文件是独立的JSON对象/数组,整体会是非法JSON,仅适合人工查看内容的场景。

原代码问题说明

  • 直接用result += infile.read()拼接文本,若原文件末尾无换行,后续文件内容会直接衔接在上一个文件的最后一行,导致内容挤在一起;
  • 未处理JSON结构的合法性,拼接后的文本无法被JSON解析器识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:42:40