如何在Python中正确合并多个同结构JSON文件
合并同结构JSON文件并移除指定字段的Python方案
核心思路
直接读取每个JSON文件,提取其中的数据条目数组,合并所有数组后写入新的JSON文件,自动实现连续索引(列表天然的顺序就是连续的,若需显式索引字段可手动添加),同时忽略原文件中的status和total字段。
代码实现
1. 基础版(处理指定文件)
如果明确知道要合并的文件名,可直接逐个读取:
import json # 定义读取并提取数据的函数 def get_json_entries(file_path): with open(file_path, 'r', encoding='utf-8') as f: content = json.load(f) # 替换为你JSON中存储数据条目的实际键名(比如'results') return content.get('data', []) # 读取两个文件的数据并合并 file1_data = get_json_entries('file1.json') file2_data = get_json_entries('file2.json') merged_entries = file1_data + file2_data # 若需给条目添加从1开始的显式索引字段 for idx, entry in enumerate(merged_entries, start=1): entry['index'] = idx # 写入合并后的JSON文件 with open('merged_result.json', 'w', encoding='utf-8') as f: json.dump(merged_entries, f, indent=2, ensure_ascii=False)
2. 扩展版(支持批量文件)
后续要处理更多同结构文件时,用glob批量匹配JSON文件更高效:
import json import glob def get_json_entries(file_path): with open(file_path, 'r', encoding='utf-8') as f: content = json.load(f) return content.get('data', []) # 匹配当前目录下所有JSON文件(可根据需求修改路径) all_json_files = glob.glob('./path/to/json/files/*.json') merged_entries = [] for file in all_json_files: merged_entries.extend(get_json_entries(file)) # 可选:添加显式连续索引 for idx, entry in enumerate(merged_entries, start=1): entry['index'] = idx # 保存结果 with open('merged_result.json', 'w', encoding='utf-8') as f: json.dump(merged_entries, f, indent=2, ensure_ascii=False)
关键说明
- 键名替换:务必将代码中的
'data'替换为你实际JSON文件中存储数据条目的键名(比如你的文件里可能是'properties'或'results')。 - 索引处理:列表本身的索引就是连续的(从0开始),如果不需要显式的索引字段,可直接跳过
enumerate循环部分。 - 避免格式问题:直接用
json模块处理原生JSON结构,比pandas更适合保留嵌套字段的完整性,不会出现结构变形或顺序错乱的问题。
内容的提问来源于stack exchange,提问作者user40975
相关产品推荐
相关产品推荐

