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

请求协助:合并3个JSON文件并解决追加内容时无法删除末尾}的问题

解决JSON文件合并时无法删除末尾}的问题

我猜你现在的情况是:每个源JSON文件都是单个JSON对象(比如{"name":"Alice", "email":"alice@example.com", ...}),而你想把它们合并成一个合法的JSON结构(比如包含多个对象的数组,或者一个带数组字段的大对象)。之前的代码只是简单追加内容,导致JSON结构损坏——直接在}后面加新对象会变成}{...},这完全不符合JSON规范,自然没法正常解析。

下面给你两种最常见场景的解决方案,你可以根据自己的需求选:


场景1:合并为JSON数组(最推荐)

如果最终想要得到[obj1, obj2, obj3]这样的数组结构,咱们可以按这个思路来:

核心思路

  1. 先给输出文件写入数组的起始标记[
  2. 逐个读取源JSON文件的对象,依次写入输出文件,用逗号分隔开(最后一个对象不用加逗号)
  3. 最后写入]闭合数组,确保JSON结构合法

示例代码(Python为例)

import json
import os

# 替换成你的三个源JSON文件路径
source_files = ["file1.json", "file2.json", "file3.json"]
output_file = "merged_result.json"

# 初始化输出文件,写入数组开头
with open(output_file, "w", encoding="utf-8") as f:
    f.write("[")

# 遍历处理每个源文件
for idx, file_path in enumerate(source_files):
    # 读取单个源文件的JSON对象
    with open(file_path, "r", encoding="utf-8") as f:
        single_obj = json.load(f)
    
    # 追加到输出文件
    with open(output_file, "a", encoding="utf-8") as f:
        # 不是第一个对象的话,先写逗号做分隔
        if idx > 0:
            f.write(",")
        # 把对象转成合法的JSON字符串写入
        json.dump(single_obj, f)

# 写入数组结尾,完成合法JSON结构
with open(output_file, "a", encoding="utf-8") as f:
    f.write("]")

print(f"合并搞定啦!输出文件在:{output_file}")

场景2:追加到已有JSON对象的数组字段中

如果你的输出文件原本是类似{"records": [obj1]}的结构,现在要把另外两个对象追加到records数组里,那不能直接在文件末尾改字符,得先读取原内容修改后再写回去:

核心思路

  1. 先检查输出文件是否存在,不存在就初始化一个带空数组的结构
  2. 读取现有输出文件的内容,解析成Python字典
  3. 逐个读取源文件的对象,追加到字典的目标数组里
  4. 把修改后的字典重新写入输出文件(覆盖原内容)

示例代码(Python为例)

import json
import os

source_files = ["file1.json", "file2.json", "file3.json"]
output_file = "merged_result.json"

# 如果输出文件不存在,先初始化结构
if not os.path.exists(output_file):
    with open(output_file, "w", encoding="utf-8") as f:
        json.dump({"records": []}, f)

# 读取现有合并内容
with open(output_file, "r", encoding="utf-8") as f:
    merged_data = json.load(f)

# 逐个追加源文件的对象
for file_path in source_files:
    with open(file_path, "r", encoding="utf-8") as f:
        single_obj = json.load(f)
    merged_data["records"].append(single_obj)

# 把更新后的内容写回文件
with open(output_file, "w", encoding="utf-8") as f:
    json.dump(merged_data, f, indent=2)  # indent=2是让JSON更易读,可去掉

print(f"合并完成!输出文件:{output_file}")

为啥你之前的方法行不通?

直接在文件末尾删}再追加的思路本身就容易出问题——如果文件内容有缩进、换行,你很难精准定位到最后一个}的位置,而且手动修改字符很容易破坏JSON的格式规范。正确的做法是先把JSON解析成内存里的数据结构(比如字典、数组),修改后再重新生成合法的JSON字符串写入文件,这样既能保证结构正确,也更稳定。

如果你的源文件是其他格式(比如每个文件里有多个对象),可以告诉我具体情况,我再帮你调整方案~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:18:01