Package Exports
- jsonexport
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (jsonexport) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
jsonexport
This module makes easy to convert JSON to CSV and its very customizable.
Changelog
- v1.3.2 - fix userOptions optional
- v1.3.1 - object & array test
- v1.3.0 - some bug fixes + mocha tests/ + removed options handleArray and handleObject
- v1.2.2 - special chars escaping improvement (papswell)
- v1.2.0 - orderHeaders defaults to false
- v1.1.2 - Escaping text content if needed (papswell)
- v1.1.0 - Expose library as CLI (cburgmer)
- v1.0.7 - Fix for prototyped properties
- v1.0.6 - Create new lines in the CSV file to handle JSON objects with arrays
Usage
Installation command is npm install jsonexport.
Run tests with npm test.
var jsonexport = require('jsonexport');
jsonexport({lang: 'Node.js',module: 'jsonexport'}, {rowDelimiter: '|'}, function(err, csv){
if(err) return console.log(err);
console.log(csv);
});JSON Array Example
Simple Array
Code
var jsonexport = require('jsonexport');
var contacts = [{
name: 'Bob',
lastname: 'Smith'
},{
name: 'James',
lastname: 'David'
},{
name: 'Robert',
lastname: 'Miller'
},{
name: 'David',
lastname: 'Martin'
}];
jsonexport(contacts,function(err, csv){
if(err) return console.log(err);
console.log(csv);
});Result
name;lastname
Bob;Smith
James;David
Robert;Miller
David;MartinComplex Array
Code
var jsonexport = require('jsonexport');
var contacts = [{
name: 'Bob',
lastname: 'Smith',
family: {
name: 'Peter',
type: 'Father'
}
},{
name: 'James',
lastname: 'David',
family:{
name: 'Julie',
type: 'Mother'
}
},{
name: 'Robert',
lastname: 'Miller',
family: null,
location: [1231,3214,4214]
},{
name: 'David',
lastname: 'Martin',
nickname: 'dmartin'
}];
jsonexport(contacts,function(err, csv){
if(err) return console.log(err);
console.log(csv);
});Result
lastname;name;family.type;family.name;nickname;location
Smith;Bob;Father;Peter;;
David;James;Mother;Julie;;
Miller;Robert;;;;1231,3214,4214
Martin;David;;;dmartin;JSON Object Example
Simple Object
Code
var jsonexport = require('jsonexport');
var stats = {
cars: 12,
roads: 5,
traffic: 'slow'
};
jsonexport(stats,function(err, csv){
if(err) return console.log(err);
console.log(csv);
});Result
cars;12
roads;5
traffic;slowComplex Object
Code
var jsonexport = require('jsonexport');
var stats = {
cars: 12,
roads: 5,
traffic: 'slow',
speed: {
max: 123,
avg: 20,
min: 5
},
size: [10,20]
};
jsonexport(stats,function(err, csv){
if(err) return console.log(err);
console.log(csv);
});Result
cars;12
roads;5
traffic;slow
speed.max;123
speed.avg;20
speed.min;5
size;10,20Customization
In order to get the most of out of this module, you can customize many parameters and functions.
####Options
headerPathString-StringUsed to create the propriety path, defaults to.examplecontact: {name: 'example}=contact.namerowDelimiter-StringChange the file row delimiter- Defaults to
,(cvs format). - Use
\tfor xls format. - Use
;for (windows excel .csv format).
- Defaults to
textDelimiter-StringThe character used to escape the text content if needed (default to")endOfLine-StringReplace the OS default EOL.mainPathItem-StringEvery header will have themainPathItemas the base.arrayPathString-StringThis is used to output primitive arrays in a single column, defaults to;booleanTrueString-StringWill be used instead oftrue.booleanFalseString-StringWill be used instead offalse.includeHeaders-BooleanSet this option to false to hide the CSV headers.orderHeaders-BooleanThe most used columns are shown first. (defaults tofalse).undefinedString-StringIf you want to display a custom value for undefined strings, use this option. Defaults to.verticalOutput-BooleanSet this option to false to create a horizontal output for JSON Objects, headers in the first row, values in the second.handleString-FunctionUse this to customize allStringsin the CSV file.handleNumber-FunctionUse this to customize allNumbersin the CSV file.handleBoolean-FunctionUse this to customize allBooleansin the CSV file.handleDate-FunctionUse this to customize allDatesin the CSV file. (default to date.toLocaleString)
Handle Function Option Example
Lets say you want to prepend a text to every string in your CSV file, how to do it?
var jsonexport = require('jsonexport');
var options = {
handleString: function(string, name){
return 'Hey - ' + string;
}
};
jsonexport({lang: 'Node.js',module: 'jsonexport'}, options, function(err, csv){
if(err) return console.log(err);
console.log(csv);
});The output would be:
lang;Hey - Node.js
module;Hey - jsonexport