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

批量解析500个嵌套JSON文件提取field/value并导出CSV

批量解析嵌套JSON并导出指定CSV格式方案

需求说明

  • 需解析500个嵌套JSON文件,每个JSON根节点含10个键,每个键对应字典列表,每个字典包含统一键集合
  • 仅提取所有字典中的field和value键值对
  • 导出CSV要求:
    • 第一列为File(存储JSON文件名)
    • 后续列为所有唯一的field值
    • 每个JSON文件对应CSV一行,行内填充对应field的value

JSON结构示例

{
  "General info": [
    {
      "section": "stuff",
      "sub-section": "stuff",
      "heading": "stuff",
      "field": "X",
      "value": "Y"
    },
    {
      "section": "stuff",
      "sub-section": "stuff",
      "heading": "stuff",
      "field": "Z",
      "value": "W"
    }
  ],
  "Disclosure": [
    {
      "section": "stuff",
      "sub-section": "stuff",
      "heading": "stuff",
      "field": "A",
      "value": "B"
    }
  ],
  "Insurance": [
    {
      "section": "stuff",
      "sub-section": "stuff",
      "heading": "stuff",
      "field": "C",
      "value": "D"
    }
  ]
}

目标CSV格式

FileXZAC
file1YWBD
file2............

现有代码基础

已实现遍历指定目录下所有JSON文件的逻辑:

import os
import json

parsed_json_dicts = []
filepath_list = []

# 遍历获取所有JSON文件
for subdir, dirs, files in os.walk('my JSON directory'):
    for file in files:
        if file.endswith('.json'):  # 过滤非JSON文件
            filepath = os.path.join(subdir, file)
            with open(filepath, 'r', encoding='utf-8') as opened_file:
                json_data = json.load(opened_file)
                parsed_json_dicts.append(json_data)
                filepath_list.append(filepath)

print(f"共找到 {len(filepath_list)} 个JSON文件")

通用实现方案

完整代码

import os
import json
import pandas as pd

def extract_fields_and_values(json_data):
    """从单个JSON数据中提取所有field-value键值对"""
    field_value_map = {}
    # 遍历根节点的所有键(如General info、Disclosure等)
    for key in json_data:
        # 遍历每个键对应的字典列表
        for item in json_data[key]:
            field = item.get('field')
            value = item.get('value')
            if field:  # 确保field存在
                field_value_map[field] = value
    return field_value_map

# 初始化存储所有数据的列表
all_data = []
# 遍历目录获取JSON文件
for subdir, dirs, files in os.walk('my JSON directory'):
    for file in files:
        if file.endswith('.json'):
            filepath = os.path.join(subdir, file)
            with open(filepath, 'r', encoding='utf-8') as f:
                try:
                    json_data = json.load(f)
                    # 提取当前文件的field-value映射
                    field_values = extract_fields_and_values(json_data)
                    # 添加文件名到映射(仅保留文件名,如需完整路径直接用filepath)
                    field_values['File'] = os.path.basename(filepath)
                    all_data.append(field_values)
                except Exception as e:
                    print(f"处理文件 {filepath} 出错: {str(e)}")

# 转换为DataFrame并导出CSV
if all_data:
    df = pd.DataFrame(all_data)
    # 调整列顺序,将File列放在最前面
    cols = ['File'] + [col for col in df.columns if col != 'File']
    df = df[cols]
    # 导出CSV(utf-8-sig适配Excel中文显示)
    df.to_csv('output.csv', index=False, encoding='utf-8-sig')
    print("CSV文件已成功导出为 output.csv")
else:
    print("未找到有效JSON数据")

关键逻辑说明

  1. extract_fields_and_values函数:遍历JSON根节点的所有键,再遍历每个键对应的字典列表,提取field和value并存储为字典(若同一field出现多次,最后一次的value会覆盖之前的,可根据需求调整去重逻辑)
  2. 数据收集:遍历所有JSON文件,将每个文件的文件名和提取到的field-value映射存入列表
  3. DataFrame转换与导出:利用Pandas将列表转换为DataFrame,调整列顺序后导出为CSV,确保格式符合要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:55:31