Student0809's picture
Add files using upload-large-folder tool
3438cdb verified
raw
history blame
1.63 kB
import os
import json
def load_json(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
return json.load(f)
def get_unique_key(base_key, existing_keys):
"""在已有 key 中查找唯一 key,例如 key, key_1, key_2..."""
if base_key not in existing_keys:
return base_key
i = 1
while f"{base_key}_{i}" in existing_keys:
i += 1
return f"{base_key}_{i}"
def merge_all_jsons_in_folder(folder_path='.', output_path="merged_all_unique.json"):
merged_data = {}
for filename in os.listdir(folder_path):
if filename.endswith(".json"):
file_path = os.path.join(folder_path, filename)
try:
data = load_json(file_path)
if not isinstance(data, dict):
print(f"{filename} 不是一个字典,跳过。")
continue
for key, value in data.items():
unique_key = get_unique_key(key, merged_data)
if unique_key != key:
print(f"键 '{key}' 重复,已改为 '{unique_key}' 来合并。")
merged_data[unique_key] = value
except Exception as e:
print(f"加载 {filename} 出错:{e}")
with open(output_path, 'w', encoding='utf-8') as f:
json.dump(merged_data, f, ensure_ascii=False, indent=2)
print(f"\n合并完成,共 {len(merged_data)} 条记录写入 {output_path}")
if __name__ == "__main__":
merge_all_jsons_in_folder(folder_path='.', output_path="merged_all_unique.json")