csvToJson
csvToJson copied to clipboard
Convert CSV file to JSON
CSVtoJSON
This project is not dependent on others packages or libraries.
Table of Contents
- Description
- Prerequisites
- Install npm convert-csv-to-json package
- Usage
- Generate JSON file
- Generate Array of Object in JSON format
- Generate Object with sub array
- Define field delimiter
- Format property value by type
- Number
- Boolean
- Encoding
- Development
- License
- Buy me a Coffee
Description
Converts csv files to JSON files with Node.js.
Give an input file like:
| first_name | last_name | 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"
}
]
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-json --save
Install package on your machine
$ npm install -g convert-csv-to-json
Usage
Generate JSON file
let csvToJson = require('convert-csv-to-json');
let fileInputName = 'myInputFile.csv';
let fileOutputName = 'myOutputFile.json';
csvToJson.generateJsonFileFromCsv(fileInputName,fileOutputName);
Generate Array of Object in JSON format
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]);
}
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 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);
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);
Development
- Download all csvToJson dependencies:
npm install - Run Tests
npm test - Watch Tests
npm run test-watch
License
CSVtoJSON is licensed under the GNU General Public License v3.0 License.
Buy me a Coffee
Just if you want to support this repository:
- BTC tip address: 3KCCK292a61AHrKuVCFZ8Agr3j31Zw8Mzg