function toArray(data, opts){ opts = opts || { }; var delimiter = (opts.delimiter || ','); var quote = _getQuote(opts.quote); var content = data; if(typeof(content) !== "string"){ throw new Error("Invalid input, input data should be a string"); } content = content.split(/[\n\r]+/ig); var arrayData = [ ]; content.forEach(function(item){ if(item){ item = quote ? _convertArray(item, delimiter, quote) : item.split(delimiter); item = item.map(function(cItem){ return _trimQuote(cItem); }); arrayData.push(item); } }); return arrayData; }
...
var options = {
delimiter : ',' // optional
quote : '"' // optional
};
// for multiple delimiter you can use regex pattern like this /[,|;]+/
csvjson.toArray(data, options);
/*
returns
[
["sr","name","age","gender"],
["1","rocky","33","male"],
["2","jacky","22","male"],
...
function toCSV(data, opts){ opts = (opts || { }); opts.delimiter = (opts.delimiter || ','); opts.wrap = (opts.wrap || ''); opts.arrayDenote = (opts.arrayDenote && String(opts.arrayDenote).trim() ? opts.arrayDenote : '[]'); opts.objectDenote = (opts.objectDenote && String(opts.objectDenote).trim() ? opts.objectDenote : '.'); opts.detailedOutput = (typeof(opts.detailedOutput) !== "boolean" ? true : opts.detailedOutput); opts.headers = String(opts.headers).toLowerCase(); var csvJSON = { }; var csvData = ""; if(!opts.headers.match(/none|full|relative|key/)){ opts.headers = 'full'; }else{ opts.headers = opts.headers.match(/none|full|relative|key/)[0]; } if(opts.wrap === true){ opts.wrap = '"'; } if(typeof(data) === "string"){ data = JSON.parse(data); } _toCsv(data, csvJSON, "", 0, opts); var headers = _getHeaders(opts.headers, csvJSON, opts); if(headers){ if(opts.wrap){ headers = headers.map(function(item){ return opts.wrap + item + opts.wrap; }); } csvData = headers.join(opts.delimiter); } var bigArrayLen = _getBigArrayLength(csvJSON); var keys = Object.keys(csvJSON); var row = [ ]; var replaceNewLinePattern = /\n|\r/g; if(!opts.wrap){ replaceNewLinePattern = new RegExp('\n|\r|' + opts.delimiter, 'g'); } for(var i = 0; i < bigArrayLen; i++){ row = [ ]; for(var j = 0; j < keys.length; j++){ if(csvJSON[keys[j]][i]){ csvJSON[keys[j]][i] = csvJSON[keys[j]][i].replace(replaceNewLinePattern, '\t'); if(opts.wrap){ csvJSON[keys[j]][i] = opts.wrap + csvJSON[keys[j]][i] + opts.wrap; } row[row.length] = csvJSON[keys[j]][i]; }else{ row[row.length] = ""; } } csvData += '\n' + row.join(opts.delimiter); } return csvData; }
...
wrap = <String|Boolean> optional default value is false
headers = <String> optional supported values are "full", "none", "relative", "key
"
objectDenote = <String> optional default value is "."
arrayDenote = <String> optional default value is "[]"
*/
csvjson.toCSV(data, options);
/*
returns
book.person[].firstName,book.person[].lastName,book.person[].age,book.person[].address.streetAddress,book.person[].address.city,
book.person[].address.state,book.person[].address.postalCode,book.person[].hobbies[]
Jane,Doe,25,21 2nd Street,Las Vegas,NV,10021-3100,gaming;volleyball
Agatha,Doe,25,21 2nd Street,Las Vegas,NV,10021-3100,dancing;politics
...
function toColumnArray(data, opts){ opts = opts || { }; var delimiter = (opts.delimiter || ','); var quote = _getQuote(opts.quote); var content = data; var headers = null; if(typeof(content) !== "string"){ throw new Error("Invalid input, input data should be a string"); } content = content.split(/[\n\r]+/ig); if(typeof(opts.headers) === "string"){ headers = opts.headers.split(/[\n\r]+/ig); headers = quote ? _convertArray(headers.shift(), delimiter, quote) : headers.shift().split(delimiter); }else{ headers = quote ? _convertArray(content.shift(), delimiter, quote) : content.shift().split(delimiter); } var hashData = { }; headers.forEach(function(item){ hashData[item] = []; }); content.forEach(function(item){ if(item){ item = quote ? _convertArray(item, delimiter, quote) : item.split(delimiter); item.forEach(function(val, index){ hashData[headers[index]].push(_trimQuote(val)); }); } }); return hashData; }
...
/*
for importing headers from different source you can use headers property in options
var options = {
headers : "sr,name,age,gender"
};
*/
csvjson.toColumnArray(data, options);
/*
returns
{
sr: [ '1', '2', '3' ],
name: [ 'rocky', 'jacky', 'suzy' ],
...
function toObject(data, opts){ opts = opts || { }; var delimiter = (opts.delimiter || ','); var quote = _getQuote(opts.quote); var content = data; var headers = null; if(typeof(content) !== "string"){ throw new Error("Invalid input, input data should be a string"); } content = content.split(/[\n\r]+/ig); if(typeof(opts.headers) === "string"){ headers = opts.headers.split(/[\n\r]+/ig); headers = quote ? _convertArray(headers.shift(), delimiter, quote) : headers.shift().split(delimiter); }else{ headers = quote ? _convertArray(content.shift(), delimiter, quote) : content.shift().split(delimiter); } var hashData = [ ]; content.forEach(function(item){ if(item){ item = quote ? _convertArray(item, delimiter, quote) : item.split(delimiter); var hashItem = { }; headers.forEach(function(headerItem, index){ hashItem[headerItem] = _trimQuote(item[index]); }); hashData.push(hashItem); } }); return hashData; }
...
/*
for importing headers from different source you can use headers property in options
var options = {
headers : "sr,name,age,gender"
};
*/
csvjson.toObject(data, options);
/*
returns
[
{
sr : 1,
...
function toSchemaObject(data, opts){ opts = opts || { }; var delimiter = (opts.delimiter || ','); var quote = _getQuote(opts.quote); var content = data; var headers = null; if(typeof(content) !== "string"){ throw new Error("Invalid input, input should be a string"); } content = content.split(/[\n\r]+/ig); if(typeof(opts.headers) === "string"){ headers = opts.headers.split(/[\n\r]+/ig); headers = quote ? _convertArray(headers.shift(), delimiter, quote) : headers.shift().split(delimiter); }else{ headers = quote ? _convertArray(content.shift(), delimiter, quote) : content.shift().split(delimiter); } var hashData = [ ]; content.forEach(function(item){ if(item){ item = quote ? _convertArray(item, delimiter, quote) : item.split(delimiter); var schemaObject = {}; item.forEach(function(val, index){ _putDataInSchema(headers[index], val, schemaObject , delimiter, quote); }); hashData.push(schemaObject); } }); return hashData; }
...
/*
for importing headers from different source you can use headers property in options
var options = {
headers : "created,contact.name,contact.age+,contact.number+,address[],address[],contact.hobbies[;],-id,friends[0].name,friends
[0].phone,friends[1].name,friends[1].phone"
};
*/
csvjson.toSchemaObject(data, options)
/*
returns
[
{
"created":"2014-11-12",
...