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

如何将含嵌套action_history的JSON字典转换为指定格式CSV?

问题描述

需要从JSON数据中提取recordID、date、title字段,并将嵌套的action_history数组拆分为CSV的独立行——每行关联对应主记录的recordID、title、date字段,而非将action_history作为整列输出。

示例数据

输入JSON示例

[
  {
    "recordID": "REC001",
    "date": "2024-05-20",
    "title": "项目启动",
    "action_history": [
      {
        "actionID": "ACT001",
        "actionName": "创建任务",
        "operator": "张三"
      },
      {
        "actionID": "ACT002",
        "actionName": "分配资源",
        "operator": "李四"
      }
    ]
  },
  {
    "recordID": "REC002",
    "date": "2024-05-21",
    "title": "需求评审",
    "action_history": [
      {
        "actionID": "ACT003",
        "actionName": "发起评审",
        "operator": "王五"
      }
    ]
  }
]

当前输出(不符合需求)

recordIDdatetitleaction_history
REC0012024-05-20项目启动[{"actionID":"ACT001","actionName":"创建任务","operator":"张三"}, {"actionID":"ACT002","actionName":"分配资源","operator":"李四"}]
REC0022024-05-21需求评审[{"actionID":"ACT003","actionName":"发起评审","operator":"王五"}]

期望输出

recordIDdatetitleactionIDactionNameoperator
REC0012024-05-20项目启动ACT001创建任务张三
REC0012024-05-20项目启动ACT002分配资源李四
REC0022024-05-21需求评审ACT003发起评审王五

解决方案脚本

import json
import csv

# 读取JSON数据
with open('input.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# 定义CSV完整表头
headers = ['recordID', 'date', 'title', 'actionID', 'actionName', 'operator']

# 写入目标CSV文件
with open('output.csv', 'w', newline='', encoding='utf-8') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=headers)
    writer.writeheader()
    
    # 遍历每条主记录
    for record in data:
        # 提取主记录的固定字段
        base_info = {
            'recordID': record['recordID'],
            'date': record['date'],
            'title': record['title']
        }
        # 遍历当前记录的每个动作历史,生成独立行
        for action in record['action_history']:
            # 合并主记录字段与动作字段
            output_row = {**base_info, **action}
            writer.writerow(output_row)

脚本说明

  • 先加载JSON数据,定义包含主记录字段和动作字段的完整表头
  • 遍历每条主记录,提取recordID、date、title三个固定字段
  • 对每个主记录下的action_history条目,将主字段与动作字段合并为一行后写入CSV
  • 全程使用UTF-8编码,避免中文乱码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 11:27:42