easy-csv

JSON to CSV conversion tool.

Usage no npm install needed!

<script type="module">
  import easyCsv from 'https://cdn.skypack.dev/easy-csv';
</script>

README

Easy-CSV

Easy-CSV is a simple JSON-to-CSV node module. You can use customer delimiters, endline chars, field names, fields, or just use the out-of-the-box defaults. Only one method, .toCSV, accepts a valid JSON array as input.

Will only Node v4.0 and greater.

To get started:

$npm install easy-csv

Then use the module either using Node conventional err first callbacks, or using bluebird.js promises:

//using callbacks
let CSV = require('easy-csv');
let data = [{some: "data", number: 1}];
CSV.toJSON(data, function(err, csv) {
    if(err) { //do something with any errors }
    else{ console.log(csv) } // some,number
                             // data,1
});

//using promises
let CSV = require('easy-csv');
let data = [{some: "data", number: 1}];
CSV.toCSV(data)
    .then(csv => {
        //some, number
        //data, 1
    })
    .catch(err => {
        //do something with the error
    });

Options

The available options are easy to use and should be fairly straight-forward

  • delimiter: The character that will be inserted between JSON values in a CSV row. Default: ','.
  • endline: The character(s) that will be inserted to denote the end of the CSV row. Default: '\n' .
  • fields: <Array: String> The Object keys used that pertain to the JSON values. Default: The object keys from the first index.
  • fieldNames: <Array: String> The header names to be used in the first CSV row. Default: Same as the fields array.

Options example:

let options = {
    delimiter: '|', //will use pipes between values within CSV row
    endline: '\n\r', //will end all CSV rows (except last) with \n\r instead of \n 
    fields: ['some', 'number'], //will only insert values matching to attributes 'some' and 'number'
    fieldNames: ['First', 'Second'] //will make CSV headers be 'First,Second'
};

Testing

A handful of tests exist for 'happy path' uses. They can be run from the command line by navigating to the module directory and running:

$ npm run test

Thanks in advance for reporting any issues or bugs! TicketCity