Skip to content
json2026-07-252 分钟阅读

什么是 JSON/CSV 转换

JSON/CSV 转换是将 JSON 数组(对象列表)与 CSV 表格格式之间互相转换的过程。JSON 适合程序处理,CSV 适合 Excel 和数据分析工具。

转换示例

JSON → CSV:

[
  { "name": "张三", "age": 28, "city": "上海" },
  { "name": "李四", "age": 32, "city": "北京" }
]

CSV 输出:

name,age,city
张三,28,上海
李四,32,北京

JSON vs CSV 适用场景

| 场景 | JSON | CSV | |------|------|-----| | Web API | ✅ 首选 | ❌ 不适合 | | Excel 处理 | ❌ 不直接支持 | ✅ 原生支持 | | 嵌套数据 | ✅ 支持 | ❌ 不支持 | | 数据分析 | ⚠️ 需要解析 | ✅ 直接分析 | | 数据导出 | ⚠️ 不直观 | ✅ 用户友好 | | 配置文件 | ✅ 适合 | ❌ 不适合 | | 大数据量 | ⚠️ 文件较大 | ✅ 文件较小 |

为什么需要 JSON/CSV 转换

  1. 数据分析:将 API 返回的 JSON 导入 Excel/Google Sheets 分析
  2. 数据导出:将数据库查询结果(JSON)导出为 CSV 供用户下载
  3. 数据迁移:在不同系统之间迁移数据
  4. 报表生成:将 JSON 数据转换为 CSV 生成报表
  5. 批量操作:在 Excel 中批量编辑后导回 JSON
  6. 数据可视化:许多可视化工具支持 CSV 输入

转换挑战

嵌套 JSON 的展平

JSON 支持嵌套结构,CSV 不支持。需要「展平」嵌套对象:

// 原始 JSON
{ "name": "张三", "address": { "city": "上海", "zip": "200000" } }

// 展平后
{ "name": "张三", "address.city": "上海", "address.zip": "200000" }

数组字段的处理

JSON 中的数组在 CSV 中需要特殊处理:

{ "name": "张三", "tags": ["developer", "admin"] }

常见处理方式:用分隔符连接(developer;admin)或拆分为多行。

如何使用在线工具

使用 DevToolkit Pro 的 JSON/CSV 转换器

  1. 粘贴 JSON 数组或 CSV 数据
  2. 工具自动检测格式并转换
  3. 支持嵌套 JSON 展平
  4. 自定义分隔符和引号处理
  5. 预览转换结果并复制

代码中的转换

JavaScript:JSON → CSV

function jsonToCSV(jsonArray) {
  if (!jsonArray.length) return '';
  // 展平嵌套对象
  const flatten = (obj, prefix = '') =>
    Object.entries(obj).reduce((acc, [key, val]) => {
      const fullKey = prefix ? `${prefix}.${key}` : key;
      if (typeof val === 'object' && val !== null && !Array.isArray(val)) {
        Object.assign(acc, flatten(val, fullKey));
      } else {
        acc[fullKey] = Array.isArray(val) ? val.join(';') : val;
      }
      return acc;
    }, {});

  const flatData = jsonArray.map(item => flatten(item));
  const headers = Object.keys(flatData[0]);
  const rows = flatData.map(row =>
    headers.map(h => {
      const val = String(row[h] ?? '');
      return val.includes(',') || val.includes('"') || val.includes('\n')
        ? `"${val.replace(/"/g, '""')}"` : val;
    }).join(',')
  );
  return [headers.join(','), ...rows].join('\n');
}

JavaScript:CSV → JSON

function csvToJSON(csv) {
  const lines = csv.trim().split('\n');
  const headers = lines[0].split(',').map(h => h.trim());
  return lines.slice(1).map(line => {
    const values = line.split(',');
    return headers.reduce((obj, header, i) => {
      let val = values[i]?.trim() ?? '';
      // 自动类型转换
      if (val === 'true') val = true;
      else if (val === 'false') val = false;
      else if (val === 'null') val = null;
      else if (!isNaN(val) && val !== '') val = Number(val);
      obj[header] = val;
      return obj;
    }, {});
  });
}

FAQ

JSON 中的嵌套对象怎么转 CSV?

需要先「展平」嵌套对象。常见方式:用点号连接键名(address.city)或下划线(address_city)。在线工具通常自动处理展平。

CSV 转 JSON 后数字类型丢失了怎么办?

CSV 没有类型信息,所有值都是字符串。转换时需要添加类型推断逻辑:检测数字字符串转为 Number,true/false 转为布尔值。

JSON 数组中的嵌套数组怎么处理?

JSON 数组可以嵌套其他数组或对象。转 CSV 时需要决定:展平为多行(每行一个元素)还是合并为一个字段(用分隔符连接)。取决于你的使用场景。


本文由 DevToolkit Pro 提供。更多开发者工具请访问 首页


ad