json2csv

2024-07-01 12:01:05 630
json2csv 是一个强大的 JavaScript 库,主要用于将 JSON 数据转换为 CSV 格式。它提供了简单而灵活的 API,适用于浏览器和 Node.js 环境,能够轻松处理各种复杂的数据转换需求。

特点

  • 高性能:能够高效地将大规模 JSON 数据转换为 CSV 格式。
  • 灵活配置:提供多种配置选项,如自定义字段、转换函数、分隔符等。
  • 多环境支持:可在浏览器和 Node.js 环境中使用。
  • 简单易用:API 设计简洁,便于快速上手。
  • 支持嵌套对象:能够处理嵌套的 JSON 结构,并将其展平为 CSV。
  • 内置类型转换:支持将不同类型的数据转换为 CSV 格式。

使用场景

  • 数据导出:将 JSON 数据导出为 CSV 文件,以便进行数据分析或分享。
  • 数据转换:在数据处理管道中,将 JSON 数据转换为 CSV 格式,方便后续处理。
  • 后端服务:在后端服务中,将数据库查询结果转换为 CSV 格式,以便客户端下载。
  • 数据备份:将 JSON 数据备份为 CSV 文件,便于存档和恢复。

安装方式

使用 npm 安装:

npm install json2csv

使用 yarn 安装:

yarn add json2csv

使用示例

基本使用

const { parse } = require('json2csv');

const jsonData = [
  { name: 'Alice', age: 30, city: 'New York' },
  { name: 'Bob', age: 25, city: 'Los Angeles' }
];

const csv = parse(jsonData);
console.log(csv);

自定义字段

const { parse } = require('json2csv');

const jsonData = [
  { name: 'Alice', age: 30, city: 'New York' },
  { name: 'Bob', age: 25, city: 'Los Angeles' }
];

const fields = ['name', 'city'];
const opts = { fields };

const csv = parse(jsonData, opts);
console.log(csv);

处理嵌套对象

const { parse } = require('json2csv');

const jsonData = [
  { name: 'Alice', info: { age: 30, city: 'New York' } },
  { name: 'Bob', info: { age: 25, city: 'Los Angeles' } }
];

const fields = ['name', 'info.age', 'info.city'];
const opts = { fields };

const csv = parse(jsonData, opts);
console.log(csv);

常用 API 介绍

  • parse:将 JSON 数据解析为 CSV 格式。

    const csv = parse(data, options);
    
    • data:要转换的 JSON 数据。
    • options:配置对象,用于自定义转换行为。
  • parseAsync:异步解析 JSON 数据为 CSV 格式。

    const csv = await parseAsync(data, options);
    
    • data:要转换的 JSON 数据。
    • options:配置对象,用于自定义转换行为。
  • 配置选项

    • fields:要包含在 CSV 中的字段列表。
    • delimiter:字段分隔符,默认为逗号。
    • defaultValue:当字段缺失时的默认值。
    • quote:是否对字段值进行引号包裹。
    • header:是否包含 CSV 表头。

高级用法

使用转换函数

可以使用自定义转换函数,对字段值进行转换:

const { parse } = require('json2csv');

const jsonData = [
  { name: 'Alice', age: 30, city: 'New York' },
  { name: 'Bob', age: 25, city: 'Los Angeles' }
];

const fields = [
  {
    label: 'Name',
    value: 'name'
  },
  {
    label: 'Age',
    value: row => row.age + ' years'
  },
  {
    label: 'City',
    value: 'city'
  }
];

const opts = { fields };

const csv = parse(jsonData, opts);
console.log(csv);

流式转换

可以处理大规模数据的流式转换:

const { Transform } = require('json2csv');
const fs = require('fs');

const input = fs.createReadStream('path/to/json/file.json');
const output = fs.createWriteStream('path/to/csv/file.csv');

const opts = { fields: ['name', 'age', 'city'] };
const transformOpts = { highWaterMark: 16384, encoding: 'utf-8' };

const json2csv = new Transform(opts, transformOpts);

input.pipe(json2csv).pipe(output);

官方资料

json2csv 是一个功能强大且灵活的库,能够满足各种 JSON 到 CSV 的转换需求,是开发者进行数据处理和导出的得力工具。