Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
© Pradeep Mishra, Licensed under the MIT-LICENSE
var csvjson = require('csvjson');
/*
sample.csv
sr,name,age,gender
1,rocky,33,male
2,jacky,22,male
3,suzy,21,female
*/
/*
schema_sample.csv
created,contact.name,contact.age+,contact.number+,address[],address[],contact.hobbies[],contact.hobbies[],-id
2014-11-12,Pradeep,25,4352436,MG Road,Mumbai,pc games,guitar,5
2014-10-06,Arnav,16,7364537,KB Road,Mumbai,pc games,traveling,7
*/
/*
schema_sample2.csv
name,age,contacts[0].name,contacts[0].phone,contacts[1].name,contacts[1].phone,musician,instruments.past,instruments.current[],instruments.current[]
Mark,33,Jim Palmer,8888888888,Marcus Aurelius,7309899877,Yes,Guitar,Drums,Bass Guitar
Jeff,27,John Doe,8009008000,Michael Corleone,2121001000,Yes,Drums,Flute,Trumpet
*/
/*
jsoncsv.json
{
"book": {
"person": [
{
"firstName": "Jane",
"lastName": "Doe",
"age": "25",
"address": {
"streetAddress": "21 2nd Street",
"city": "Las Vegas",
"state": "NV",
"postalCode": "10021-3100"
},
"hobbies" : ["gaming", "volleyball"]
},
{
"firstName": "Agatha",
"lastName": "Doe",
"age": "25",
"address": {
"streetAddress": "21 2nd Street",
"city": "Las Vegas",
"state": "NV",
"postalCode": "10021-3100"
},
"hobbies" : ["dancing", "politics"]
}
]
}
}
*/
var data = fs.readFileSync(path.join(__dirname, 'schema_sample2.csv'), { encoding : 'utf8'});
/*
{
delimiter : <String> optional default is ","
quote : <String|Boolean> default is null
}
*/
var options = {
delimiter : ',', // optional
quote : '"' // optional
};
// for multiple delimiter you can use regex pattern like this /[,|;]+/
/*
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,
name : "rocky",
age : 33,
gender : "male"
},
{
sr : 2,
name : "jacky",
age : 22,
gender : "male"
},
{
sr : 3,
name : "suzy",
age : 21,
gender : "female"
}
]
*/
/*
for creating schema of json object following key can be used in header of csv file:
. for defining nested json object
[] for defining data as array (suffix)
-- can add delimiter in the array (i.e. [;] for delimiter of ;)
-- can nest objects in the array, index must be listed (i.e. [1] for index 1)
+ for defining data as integer (suffix)
- for omitting data from result output (prefix)
*/
/*
schema_sample.csv
created,contact.name,contact.age+,contact.number+,address[],address[],contact.hobbies[;],-id,friends[0].name,friends[0].phone,friends[1].name,friends[1].phone
2014-11-12,Pradeep,25,4352436,MG Road,Mumbai,pc games; guitar,5,Jeff,8761234567,Mike,1234567890
2014-10-06,Arnav,16,7364537,KB Road,Mumbai,pc games; traveling,7,Steve,555555555,Pradeep,4352436
*/
var data = fs.readFileSync(path.join(__dirname, 'schema_sample.csv'), { encoding : 'utf8'});
/*
{
delimiter : <String> optional default is ","
quote : <String|Boolean> default is null
}
*/
var options = {
delimiter : ',', // optional
quote : '"' // optional
};
// for multiple delimiter you can use regex pattern like this /[,|;]+/
/*
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",
"contact":{
"name":"Pradeep","
age":25,
"number":4352436,
"hobbies":["pc games","guitar"]
},
"address":["MG Road","Mumbai"],
"friends":[
{
"name": "Jeff",
"phone": "8761234567"
},
{
"name": "Mike",
"phone": "1234567890"
}
]
},
{
"created":"2014-10-06",
"contact":{"
name":"Arnav",
"age":16,
"number":7364537,
"hobbies":["pc games","traveling"]
},
"address":["KB Road","Mumbai"],
"friends":[
{
"name": "Steve",
"phone": "5555555555"
},
{
"name": "Pradeep",
"phone": "4352436"
}
]
}
]
*/
var data = fs.readFileSync(path.join(__dirname, 'sample.csv'), { encoding : 'utf8'});
/*
{
delimiter : <String> optional default is ","
quote : <String|Boolean> default is null
}
*/
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"],
["3","suzy","21","female"]
]
*/
var data = fs.readFileSync(path.join(__dirname, 'sample.csv'), { encoding : 'utf8'});
/*
{
delimiter : <String> optional default is ","
quote : <String|Boolean> default is null
}
*/
var options = {
delimiter : ',', // optional
quote : '"' // optional
};
// for multiple delimiter you can use regex pattern like this /[,|;]+/
/*
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' ],
age: [ '33', '22', '21' ],
gender: [ 'male', 'male', 'female' ]
}
*/
var data = fs.readFileSync(path.join(__dirname, 'jsoncsv.json'), { encoding : 'utf8'});
var options = {
delimiter : ",",
wrap : false
}
/* supported options
delimiter = <String> optional default value is ","
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
*/
var read = fs.createReadStream(path.join(__dirname, 'sample.csv'));
var write = fs.createWriteStream(path.join(__dirname, 'sample.json'));
var toObject = csvjson.stream.toObject();
var stringify = csvjson.stream.stringify();
read.pipe(toObject).pipe(stringify).pipe(write);
/*
following functions available for stream transformation
csvjson.stream.toObject()
csvjson.stream.toArray()
csvjson.stream.toColumnArray()
csvjson.stream.toSchemaObject()
*/
/*
csvjson.stream.stringify([space<number>])
stringify function accepts optional space parameter to format output
*/
npm install csvjson --save
FAQs
convert csv to json and json to csv
The npm package csvjson receives a total of 52,476 weekly downloads. As such, csvjson popularity was classified as popular.
We found that csvjson demonstrated a not healthy version release cadence and project activity because the last version was released 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
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.