
Security News
ESLint Adds Official Support for Linting HTML
ESLint now supports HTML linting with 48 new rules, expanding its language plugin system to cover more of the modern web development stack.
convert-csv-to-json
Advanced tools
This project is not dependent on others packages or libraries.
Follow me, and consider starring the project to show your :heart: and support.
Converts csv files to JSON files with Node.js.
Give an input file like:
first_name | last_name | gender | age | zip | registered | |
---|---|---|---|---|---|---|
Constantin | Langsdon | clangsdon0@hc360.com | Male | 96 | 123 | true |
Norah | Raison | nraison1@wired.com | Female | 32 | false |
e.g. :
first_name;last_name;email;gender;age;zip;registered
Constantin;Langsdon;clangsdon0@hc360.com;Male;96;123;true
Norah;Raison;nraison1@wired.com;Female;32;;false
will generate:
[
{
"first_name": "Constantin",
"last_name": "Langsdon",
"email": "clangsdon0@hc360.com",
"gender": "Male",
"age": "96",
"zip": "123",
"registered": "true"
},
{
"first_name": "Norah",
"last_name": "Raison",
"email": "nraison1@wired.com",
"gender": "Female",
"age": "32",
"zip": "",
"registered": "false"
}
]
This package is compatible with and
.
NPM (see Installing Npm).
Go to NPM package convert-csv-to-json.
Install package in your package.json
$ npm install convert-csv-to-json --save
Install package on your machine
$ npm install -g convert-csv-to-json
let csvToJson = require('convert-csv-to-json');
let fileInputName = 'myInputFile.csv';
let fileOutputName = 'myOutputFile.json';
csvToJson.generateJsonFileFromCsv(fileInputName,fileOutputName);
let csvToJson = require('convert-csv-to-json');
let json = csvToJson.getJsonFromCsv("myInputFile.csv");
for(let i=0; i<json.length;i++){
console.log(json[i]);
}
firstName;lastName;email;gender;age;birth;sons
Constantin;Langsdon;clangsdon0@hc360.com;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": "clangsdon0@hc360.com",
"gender": "Male",
"age": "96",
"birth": "10.02.1965",
"sons": ["diego","marek","dries"]
}
]
A field delimiter is needed to split the parsed values. As default the field delimiter is the semicolon (;), this means that during the parsing when a semicolon (;) 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 comma , then:
csvToJson.fieldDelimiter(',')
.getJsonFromCsv(fileInputName);
The content of the field header is cut off at the beginning and end of the string. E.g. " Last Name " -> "Last Name".
Use the method trimHeaderFieldWhiteSpace(true) to remove the whitespaces in an header field (E.g. " Last Name " -> "LastName"):
csvToJson.trimHeaderFieldWhiteSpace(true)
.getJsonFromCsv(fileInputName);
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 | |
---|---|---|
Constantin | "Langsdon,Nandson,Gangson" | clangsdon0@hc360.com |
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": "clangsdon0@hc360.com"
}
]
If the header is not on the first line you can define the header index like:
csvToJson.indexHeader(3)
.getJsonFromCsv(fileInputName);
Empty rows are ignored and not parsed.
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": "clangsdon0@hc360.com",
"gender": "Male",
"age": 96,
"zip": 123,
"registered": true
},
{
"first_name": "Norah",
"last_name": "Raison",
"email": "nraison1@wired.com",
"gender": "Female",
"age": 32,
"zip": "",
"registered": false
}
]
The property age is printed as
"age": 32
instead of
"age": "32"
The property registered is printed as
"registered": true
instead of
"registered": "true"
You can read and decode files with the following encoding:
csvToJson.utf8Encoding()
.getJsonFromCsv(fileInputName);
csvToJson.ucs2Encoding()
.getJsonFromCsv(fileInputName);
csvToJson.utf16leEncoding()
.getJsonFromCsv(fileInputName);
csvToJson.latin1Encoding()
.getJsonFromCsv(fileInputName);
csvToJson.asciiEncoding()
.getJsonFromCsv(fileInputName);
csvToJson.base64Encoding()
.getJsonFromCsv(fileInputName);
csvToJson.hexEncoding()
.getJsonFromCsv(fileInputName);
The exposed API is implemented with the Method Chaining Pattern, which means that multiple methods can be chained, e.g.:
let csvToJson = require('convert-csv-to-json');
csvToJson.fieldDelimiter(',')
.formatValueByType()
.parseSubArray("*",',')
.supportQuotedField(true)
.getJsonFromCsv('myInputFile.csv');
npm install
npm test
npm run test-debug
This repository uses the GitHub Action iuccio/npm-semantic-publish-action@latest to publish the npm packeges. Pushing on the master branch, depending on the git message, an new version will always be released. If the commit message contains the keyword:
CSVtoJSON is licensed under the GNU General Public License v3.0 License.
Just if you want to support this repository:
FAQs
Convert CSV to JSON
The npm package convert-csv-to-json receives a total of 0 weekly downloads. As such, convert-csv-to-json popularity was classified as not popular.
We found that convert-csv-to-json demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
ESLint now supports HTML linting with 48 new rules, expanding its language plugin system to cover more of the modern web development stack.
Security News
CISA is discontinuing official RSS support for KEV and cybersecurity alerts, shifting updates to email and social media, disrupting automation workflows.
Security News
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.