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

如何使用JavaScript将指定JSON结构转换为目标CSV格式?

解决JSON转指定格式CSV的JavaScript实现

首先注意你给出的目标CSV表头存在笔误,正确表头应该是 "Date", "header1", "header2", "header3"(对应下方的数值列),以下实现基于此正确结构完成。

实现思路

  1. 提取所有唯一日期并排序,确保行顺序统一
  2. 构建符合要求的CSV表头
  3. 按日期遍历,匹配每个表头对应的数值
  4. 拼接成标准CSV格式字符串

完整代码实现

// 输入的JSON数据
const jsonData = {
  "header1": [
    {"date": "2022-11-05", "value": 1},
    {"date": "2022-11-06", "value": 2}
  ],
  "header2": [
    {"date": "2022-11-05", "value": 10},
    {"date": "2022-11-06", "value": 20}
  ],
  "header3": [
    {"date": "2022-11-05", "value": 100},
    {"date": "2022-11-06", "value": 300}
  ]
};

// 1. 收集所有唯一日期并排序
const allDates = [...new Set(
  Object.values(jsonData)
    .flatMap(arr => arr.map(item => item.date))
)].sort();

// 2. 构建CSV表头
const headers = ["Date", ...Object.keys(jsonData)];
const csvHeader = headers.map(h => `"${h}"`).join(", ");

// 3. 构建每一行的数据
const csvRows = allDates.map(date => {
  // 先处理日期列
  const row = [`"${date}"`];
  // 遍历每个表头,找到对应日期的value
  headers.slice(1).forEach(header => {
    const item = jsonData[header].find(item => item.date === date);
    // 如果找不到对应日期,用空值填充
    row.push(item ? item.value : "");
  });
  return row.join(", ");
});

// 4. 拼接成完整CSV
const csv = [csvHeader, ...csvRows].join("\n");

console.log(csv);

输出结果

运行后会得到符合要求的CSV:

"Date", "header1", "header2", "header3"
"2022-11-05", 1, 10, 100
"2022-11-06", 2, 20, 300

额外说明

  • 代码处理了日期不一致的情况:如果某个表头下没有对应日期的数据,会用空值填充
  • 日期会自动排序,保证输出顺序统一
  • 字符串类型的字段(日期、表头)都添加了双引号,符合CSV标准格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:20:39