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

如何将多个同结构JSON文件合并导出为含指定字段的CSV文件

多同结构JSON合并为指定字段CSV的可行方案

原有方案失败原因

  • jsonv方案报错为本地gawk版本与jsonv内置正则规则不兼容,无额外调整价值
  • JQ方案报错原因是未展开JSON嵌套结构,直接将嵌套对象传入CSV序列化逻辑,同时存在字段拼写错误(原数据字段为max_cmds,命令中写为max_cmd)
  • 原有pandas代码未处理params嵌套结构,也未做指定字段筛选

方案1:命令行JQ实现(无需额外编程环境)

直接在JSON文件所在目录执行以下命令即可批量合并:

# 写入CSV表头
echo "sequential,write,io_size,max_cmds,seconds,iops,mbs,latency_min,latency_ave,latency_max" > output.csv
# 遍历所有JSON文件提取指定字段追加到CSV
for file in *.json; do
  jq -r '.["1"][] | [.params.sequential, .params.write, .params.io_size, .params.max_cmds, .params.seconds, .iops, .mbs, .latency_min, .latency_ave, .latency_max] | @csv' "$file" >> output.csv
done

逻辑说明:

  • .["1"][] 先定位顶层键"1"对应的数组,再展开数组内的单条测试记录
  • 嵌套在params对象内的字段通过.params.xxx取值,顶层性能指标字段直接通过.xxx取值
  • 所有提取值均为基础数据类型,无嵌套对象,不会触发CSV序列化报错

方案2:修正pandas代码(适配原有脚本逻辑)

替换原有Python脚本为以下内容即可:

import pandas as pd
import os

# 定义需要导出的目标字段
target_cols = [
    "sequential", "write", "io_size", "max_cmds", "seconds",
    "iops", "mbs", "latency_min", "latency_ave", "latency_max"
]
record_list = []

for filename in os.listdir(os.getcwd()):
    _, ext = os.path.splitext(filename)
    if ext.lower() != ".json":
        continue
    # 读取JSON并定位到测试记录数组
    json_data = pd.read_json(filename, orient="index").iloc[0,0]
    for item in json_data:
        # 提取指定字段,处理params嵌套结构
        row = {
            "sequential": item["params"]["sequential"],
            "write": item["params"]["write"],
            "io_size": item["params"]["io_size"],
            "max_cmds": item["params"]["max_cmds"],
            "seconds": item["params"]["seconds"],
            "iops": item["iops"],
            "mbs": item["mbs"],
            "latency_min": item["latency_min"],
            "latency_ave": item["latency_ave"],
            "latency_max": item["latency_max"]
        }
        record_list.append(row)

# 导出为CSV,utf-8-sig编码兼容Windows系统打开不乱码
pd.DataFrame(record_list, columns=target_cols).to_csv("output.csv", index=False, encoding="utf-8-sig")

逻辑说明:

  • 自动过滤非JSON后缀文件,兼容大小写后缀名
  • 正确展开params嵌套结构提取字段,无冗余字段导出
  • 用列表批量收集记录后一次性生成DataFrame,比循环append效率更高
  • 导出编码适配Windows系统,避免乱码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:09:46