npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

convert-csv-to-json2

v1.0.2

Published

Convert CSV to JSON

Readme

CSVtoJSON

This project is not dependent on others packages or libraries.

This project started as a fork to Iuccio's csvToJSON but quickly turned into a spiritual successor. There are 3 major differences between this project and the original.

  1. Typescript by default
  2. Code reorganized to remove duplicate definitions.
  3. Default field deliminator is now a comma (',') instead of a semi-colon (';')

If you found this project useful, please go and express your gratitude to Iuccio.

Table of Contents

Description

Converts csv files to JSON files with Node.js.

Give an input file like:

| first_name | last_name | email | gender | age | zip | registered | | :--------: | :-------: | :------------------: | :----: | :-: | :-: | :--------: | | Constantin | Langsdon | [email protected] | Male | 96 | 123 | true | | Norah | Raison | [email protected] | Female | 32 | | false |

e.g. :

first_name;last_name;email;gender;age;zip;registered
Constantin;Langsdon;[email protected];Male;96;123;true
Norah;Raison;[email protected];Female;32;;false

will generate:

[
  {
    "first_name": "Constantin",
    "last_name": "Langsdon",
    "email": "[email protected]",
    "gender": "Male",
    "age": "96",
    "zip": "123",
    "registered": "true"
  },
  {
    "first_name": "Norah",
    "last_name": "Raison",
    "email": "[email protected]",
    "gender": "Female",
    "age": "32",
    "zip": "",
    "registered": "false"
  }
]

Support for JS & TS

This package is compatible with JavaScript and TypeScript.

Prerequisites

NPM (see Installing Npm).

Install npm convert-csv-to-json package

Go to NPM package convert-csv-to-json.

Install

Install package in your package.json

$ npm install convert-csv-to-json2 --save
$ yarn install convert-csv-to-json2 --save
$ pnpm add convert-csv-to-json2 --save

Usage

Generate JSON file

import csvToJson from 'convert-csv-to-json2';

const fileInputName = 'myInputFile.csv';
const fileOutputName = 'myOutputFile.json';

csvToJson.generateJsonFileFromCsv(fileInputName, fileOutputName);

Generate Array of Object in JSON format

import csvToJson from 'convert-csv-to-json2';

const json = csvToJson.getJsonFromCsv('myInputFile.csv');
for (let i = 0; i < json.length; i++) {
  console.log(json[i]);
}

Generate Object with sub array

firstName;lastName;email;gender;age;birth;sons
Constantin;Langsdon;[email protected];Male;96;10.02.1965;*diego,marek,dries*

Given the above CSV example, to generate a JSON Object with properties that contains sub Array, like the property sons with the values diego,marek,dries you have to call the function parseSubArray(delimiter, separator) . To generate the JSON Object with sub array from the above CSV example:

csvToJson.parseSubArray('*', ',').getJsonFromCsv('myInputFile.csv');

The result will be:

[
  {
    "firstName": "Constantin",
    "lastName": "Langsdon",
    "email": "[email protected]",
    "gender": "Male",
    "age": "96",
    "birth": "10.02.1965",
    "sons": ["diego", "marek", "dries"]
  }
]

Define field delimiter

A field delimiter is needed to split the parsed values. As default the field delimiter is the comma (,), this means that during the parsing when a comma (,) is matched a new JSON entry is created. In case your CSV file has defined another field delimiter you have to call the function fieldDelimiter(myDelimiter) and pass it as parameter the field delimiter.

E.g. if your field delimiter is the semicolon ; then:

csvToJson.fieldDelimiter(';').getJsonFromCsv(fileInputName);

Trim header field

The content of the field header is cut off at the beginning and end of the string. E.g. " Last Name " -> "Last Name".

Trim header field with whitespaces

Use the method trimHeaderFieldWhiteSpace(true) to remove the whitespaces in an header field (E.g. " Last Name " -> "LastName"):

csvToJson.trimHeaderFieldWhiteSpace(true).getJsonFromCsv(fileInputName);

Support Quoted Fields

To be able to parse correctly fields wrapped in quote, like the last_name in the first row in the following example:

| first_name | last_name | email | | :--------: | :------------------------: | :------------------: | | Constantin | "Langsdon,Nandson,Gangson" | [email protected] |

you need to activate the support quoted fields feature:

csvToJson.supportQuotedField(true).getJsonFromCsv(fileInputName);

The result will be:

[
  {
    "firstName": "Constantin",
    "lastName": "Langsdon,Nandson,Gangson",
    "email": "[email protected]"
  }
]

Index header

If the header is not on the first line you can define the header index like:

csvToJson.indexHeader(3).getJsonFromCsv(fileInputName);

Empty rows

Empty rows are ignored and not parsed.

Format property value by type

If you want that a number will be printed as a Number type, and values true or false is printed as a boolean Type, use:

csvToJson.formatValueByType().getJsonFromCsv(fileInputName);

For example:

[
  {
    "first_name": "Constantin",
    "last_name": "Langsdon",
    "email": "[email protected]",
    "gender": "Male",
    "age": 96,
    "zip": 123,
    "registered": true
  },
  {
    "first_name": "Norah",
    "last_name": "Raison",
    "email": "[email protected]",
    "gender": "Female",
    "age": 32,
    "zip": "",
    "registered": false
  }
]
Number

The property age is printed as

 "age": 32

instead of

  "age": "32"
Boolean

The property registered is printed as

 "registered": true

instead of

  "registered": "true"

Encoding

You can read and decode files with the following encoding:

  • utf8:
    csvToJson.utf8Encoding().getJsonFromCsv(fileInputName);
  • ucs2:
    csvToJson.ucs2Encoding().getJsonFromCsv(fileInputName);
  • utf16le:
    csvToJson.utf16leEncoding().getJsonFromCsv(fileInputName);
  • latin1:
    csvToJson.latin1Encoding().getJsonFromCsv(fileInputName);
  • ascii:
    csvToJson.asciiEncoding().getJsonFromCsv(fileInputName);
  • base64:
    csvToJson.base64Encoding().getJsonFromCsv(fileInputName);
  • hex:
    csvToJson.hexEncoding().getJsonFromCsv(fileInputName);

Chaining Pattern

The exposed API is implemented with the Method Chaining Pattern, which means that multiple methods can be chained, e.g.:

import csvToJson from 'convert-csv-to-json2';

csvToJson
  .fieldDelimiter(',')
  .formatValueByType()
  .parseSubArray('*', ',')
  .supportQuotedField(true)
  .getJsonFromCsv('myInputFile.csv');

Development

  • Download all csvToJson dependencies:
    pnpm install
  • Run Tests
    pnpm test
  • Debug Tests
    pnpm run test-debug