Skip to the content.

json-2-csv

Convert JSON to CSV or CSV to JSON

NPM version Typings Downloads Minzipped Size

Build Status Coverage Status Maintainability

This node module will convert an array of JSON documents to a CSV string. Column headings will be automatically generated based on the keys of the JSON documents. Nested documents will have a ‘.’ appended between the keys.

It is also capable of converting CSV of the same form back into the original array of JSON documents. The columns headings will be used as the JSON document keys. All lines must have the same exact number of CSV values.

Installation

$ npm install json-2-csv

CLI:

$ npm install @mrodrig/json-2-csv-cli

Upgrading?

Upgrading to v5 from v4? Check out the upgrade guide.

Usage

let converter = require('json-2-csv');
const csv = await converter.json2csv(data, options);

or

import { json2csv } from 'json-2-csv';

API

json2csv(array, options) => string

Returns the CSV string or rejects with an Error if there was an issue.

csv2json(csv, options) => object[]

Returns the JSON object array (object[]) or rejects with an Error if there was an issue.

CLI

Note: As of 3.5.8, the command line interface functionality has been pulled out to a separate package. Please be sure to install the @mrodrig/json-2-csv-cli NPM package if you wish to use the CLI functionality shown below:

$ npm install @mrodrig/json-2-csv-cli

json2csv

Usage: json2csv <jsonFile> [options]

Arguments:
  jsonFile                         JSON file to convert

Options:
  -V, --version                    output the version number
  -o, --output [output]            Path of output file. If not provided, then stdout will be used
  -a, --array-indexes-as-keys      Includes array indexes in the generated keys
  -S, --check-schema               Check for schema differences
  -f, --field <delimiter>          Field delimiter
  -w, --wrap <delimiter>           Wrap delimiter
  -e, --eol <delimiter>            End of Line delimiter
  -E, --empty-field-value <value>  Empty field value
  -n, --expand-nested-objects      Expand nested objects to be deep converted to CSV
  -k, --keys [keys]                Keys of documents to convert to CSV
  -d, --escape-header-nested-dots  Escape header nested dots
  -b, --excel-bom                  Excel Byte Order Mark character prepended to CSV
  -x, --exclude-keys [keys]        Comma separated list of keys to exclude
  -A, --expand-array-objects       Expand array objects
  -W, --without-header             Withhold the prepended header
  -p, --prevent-csv-injection      Prevent CSV Injection
  -s, --sort-header                Sort the header fields
  -F, --trim-fields                Trim field values
  -H, --trim-header                Trim header fields
  -U, --unwind-arrays              Unwind array values to their own CSV line
  -I, --iso-date-format            Use ISO 8601 date format
  -L, --locale-format              Use locale format for values
  -B, --wrap-booleans              Wrap booleans
  -h, --help                       display help for command

csv2json

Usage: csv2json <csvFile> [options]

Arguments:
  csvFile                      CSV file to convert

Options:
  -V, --version                output the version number
  -o, --output [output]        Path of output file. If not provided, then stdout will be used
  -f, --field <delimiter>      Field delimiter
  -w, --wrap <delimiter>       Wrap delimiter
  -e, --eol <delimiter>        End of Line delimiter
  -b, --excel-bom              Excel Byte Order Mark character prepended to CSV
  -p, --prevent-csv-injection  Prevent CSV Injection
  -F, --trim-fields            Trim field values
  -H, --trim-header            Trim header fields
  -h, --header-fields          Specify the fields names in place a header line in the CSV itself
  -k, --keys [keys]            Keys of documents to convert to CSV
  --help                       display help for command

Tests

$ npm test

To see test coverage, please run:

$ npm run coverage

Features