In an earlier article, we looked at how to convert a CSV file to a JSON array in a Node.js application. This article is the continuation of the previous article where you'll how to convert a JSON array into a CSV file.

To do the JSON to CSV conversion, we'll be using the json-2-csv module from Node Package Manager (NPM). This package converts an array of JSON documents into a CSV string. It automatically generates column headings based on the keys of the JSON documents. Nested documents will have a '.' appended between the keys.

Create an Application

To keep things simple as much as possible, we'll keep the same approach as we did in the previous article.

Create a new project directory in your local file system and switch to this location in your terminal. Now type the following command to initialize a Node.js application:

$ npm init -y

The above command will create a package.json file in the root directory. Next, install the only required dependency — json-2-csv by typing the following command:

$ npm install json-2-csv --save

Convert JSON to CSV

To convert a JSON array to a CSV file, create a new file named app.js in your project root directory:

$ touch app.js

If the touch command is not available, just create the file manually. Open the app.js file in your favorite editor and add the following code:

app.js

// require json-2-csv module
const converter = require('json-2-csv');

// declare a JSON array
const todos = [
    {
        "id": 1,
        "title": "delectus aut autem",
        "completed": false
    },
    {
        "id": 2,
        "title": "quis ut nam facilis et officia qui",
        "completed": false
    },
    {
        "id": 3,
        "title": "fugiat veniam minus",
        "completed": false
    }];

// convert JSON array to CSV string
converter.json2csv(todos, (err, csv) => {
    if (err) {
        throw err;
    }

    // print CSV string
    console.log(csv);
});

The above example is very much self-explanatory. It will print out the following CSV on the console:

id,title,completed
1,delectus aut autem,false
2,quis ut nam facilis et officia qui,false
3,fugiat veniam minus,false

Write CSV to File

To write the output CSV string to a file for further processing, just use the following JavaScript code:

// convert JSON array to CSV string
converter.json2csv(todos, (err, csv) => {
    if (err) {
        throw err;
    }

    // print CSV string
    console.log(csv);

    // write CSV to a file
    fs.writeFileSync('todos.csv', csv);
    
});

Take a look at this guide to learn more about how to write a file in a Node.js application.

Read JSON from File

If your JSON array is stored in a file, you can easily read it by using the native fs module and then perform the conversion as shown below:

app-file.js

// require json-2-csv module
const converter = require('json-2-csv');
const fs = require('fs');

// read JSON from a file
const todos = JSON.parse(fs.readFileSync('todos.json'));

// convert JSON array to CSV string
converter.json2csv(todos, (err, csv) => {
    if (err) {
        throw err;
    }

    // print CSV string
    console.log(csv);

    // write CSV to a file
    fs.writeFileSync('todos.csv', csv);
    
});

Promises

Prefer to use promises? No problem! The json-2-csv module provides a special method called json2csvAsync() that returns a promise instead of taking a callback as an argument.

Here is an example:

app-promise.js

// require json-2-csv module
const converter = require('json-2-csv');
const fs = require('fs');

// read JSON from a file
const todos = JSON.parse(fs.readFileSync('todos.json'));

// convert JSON array to CSV string
converter.json2csvAsync(todos).then(csv => {

    // print CSV string
    console.log(csv);

    // write CSV to a file
    fs.writeFileSync('todos.csv', csv);

}).catch(err => console.log(err));

Async-Await

The json-2-csv module also supports async-await syntax. Here is an example:

app-async.js

// require json-2-csv module
const converter = require('json-2-csv');
const fs = require('fs');

// read JSON from a file
const todos = JSON.parse(fs.readFileSync('todos.json'));

// convert JSON array to CSV string
(async () => {
    try {
        const csv = await converter.json2csvAsync(todos);

        // print CSV string
        console.log(csv);

        // write CSV to a file
        fs.writeFileSync('todos.csv', csv);

    } catch (err) {
        console.log(err);
    }
})();

Source Code: Download the complete source code from GitHub available under MIT license.

Conclusion

In this article, we looked at how to use the json-2-csv module to convert a JSON array to a CSV file in a Node.js Application.

Take a look at the json-2-csv module documentation to learn more about all the available options. You can also use it to convert the CSV string back into the original array of JSON documents.

Read Next: How to convert CSV to JSON in Node.js

✌️ Like this article? Follow me on Twitter and LinkedIn. You can also Subscribe to RSS Feed.

Last Updated: