CSVtoJSON
![Downloads](https://img.shields.io/npm/dm/convert-csv-to-json.svg)
This project is not dependent on others packages or libraries.
Table of Contents
- Description
- Prerequisites
- Install npm convert-csv-to-json package
- Usage
- Development
- License
- Buy me a Coffee
Description
Converts csv files to JSON files with Node.js.
Give an input file like:
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"
}
]
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;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"]
}
]
Define field delimiter
As default the filed delimiter is the semicolon (;). You can define another field delimiter
by call the function fieldDelimiter(myDelimiter)
.
If you want that the field delimiter is a ~:
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": "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
}
]
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