Skip to the content.

json-2-csv

Convert JSON to CSV or CSV to JSON

Dependencies Downloads NPM version Minzipped Size

Build Status Coverage Status Maintainability Typings

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 v3 from v2? Check out the upgrade guide.

Usage

let converter = require('json-2-csv');

or

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

Looking for examples? Check out the Wiki: json-2-csv Wiki

API

converter.json2csv(array, callback, options)

For examples, please refer to the json2csv API Documentation (Link)

Promisified Version: converter.json2csvAsync(array, options)

Available in version 2.2.0, this functionality makes use of promises from the bluebird module.

converter.csv2json(csv, callback, options)

For examples, please refer to the csv2json API Documentation (Link)

Promisified Version: csv2jsonAsync(csv, options)

Available in version 2.2.0, this functionality makes use of promises from the bluebird module.

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]

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>          Optional field delimiter
  -w, --wrap <delimiter>           Optional wrap delimiter
  -e, --eol <delimiter>            Optional end of line delimiter
  -b, --excel-bom                  Excel Byte Order Mark character prepended to CSV
  -W, --without-header             Withhold the prepended header
  -s, --sort-header                Sort the header fields
  -H, --trim-header                Trim header fields
  -F, --trim-fields                Trim field values
  -S, --check-schema               Check for schema differences
  -E, --empty-field-value <value>  Empty field value
  -A, --expand-array-objects       Expand array objects
  -k, --keys [keys]                Keys of documents to convert to CSV
  -h, --help                       output usage information

csv2json

Usage: csv2json <csvFile> [options]

Options:
  -V, --version            output the version number
  -c, --csv <csv>          Path of json file to be converted
  -o, --output [output]    Path of output file. If not provided, then stdout will be used
  -f, --field <delimiter>  Optional field delimiter
  -w, --wrap <delimiter>   Optional wrap delimiter
  -e, --eol <delimiter>    Optional end of line delimiter
  -b, --excel-bom          Excel Byte Order Mark character prepended to CSV
  -H, --trim-header        Trim header fields
  -F, --trim-fields        Trim field values
  -k, --keys [keys]        Keys of documents to convert to CSV
  -h, --help               output usage information

Tests

$ npm test

To see test coverage, please run:

$ npm run coverage

Current Coverage is:

Statements   : 100% ( 286/286 )
Branches     : 100% ( 166/166 )
Functions    : 100% ( 73/73 )
Lines        : 100% ( 280/280 )

Frequently Asked Questions (FAQ)

Please find the updated list (relocated to the Wiki) here: Frequently Asked Questions (Link)

Features