使用node.js将嵌套json转换为csv
我想使用node.js将嵌套json转换为csv文件。 我的JSON结构:使用node.js将嵌套json转换为csv,json,node.js,csv,Json,Node.js,Csv,我想使用node.js将嵌套json转换为csv文件。 我的JSON结构: [ { "Make": "Nissan", "Model": "Murano", "Year": "2013", "Specifications": { "Mileage": "7106", "Trim": "SAWD" }, "Items": [ { "flavor": {
[
{
"Make": "Nissan",
"Model": "Murano",
"Year": "2013",
"Specifications": {
"Mileage": "7106",
"Trim": "SAWD"
},
"Items": [
{
"flavor": {
"name": "Cherry",
"id": 1
},
"packSize": {
"name": "200ML",
"id": 1
}
},
{
"flavor": {
"name": "Vanilla",
"id": 2
},
"packSize": {
"name": "300ML",
"id": 2
}
}
]
},
{
"Make": "BMW",
"Model": "X5",
"Year": "2014",
"Specifications": {
"Mileage": "3287",
"Trim": "M"
},
"Items": [
{
"flavor": {
"name": "Cherry",
"id": 1
},
"packSize": {
"name": "200ML",
"id": 1
}
},
{
"flavor": {
"name": "Vanilla",
"id": 2
},
"packSize": {
"name": "300ML",
"id": 2
}
}
]
}
]
我使用了“json-2-csv”模块,但它只转换简单结构,而不是嵌套结构。
仅转换“品牌”、“型号”、“年份”和“规格”,不转换“项目”
如何做到这一点?你总是有相同的列数吗? ie:你有固定(或最大数量)的物品吗
Make;Model;Year;Mileage;Trim;Item_1_flavor_name;Item_1_packSize_name;Item_2_flavor_name;Item_2_packSize_name
您可以使用模块
jsonexport
它非常简单,请查看以下示例:
以下是使用您提供的json和jsonexport的输出:
示例:
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);
});
lastname;name;family.type;family.name;nickname;location
Smith;Bob;Father;Peter;;
David;James;Mother;Julie;;
Miller;Robert;;;;1231,3214,4214
Martin;David;;;dmartin;
输出:
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);
});
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值,它工作不正常。请尝试使用该json数组并提出适当的解决方案。我刚刚使用jsonexport进行了测试,得到了此输出,这是您所期望的吗?
Items.packSize.id,Items.packSize.name,Items.flavor.id,Items.flavor.name,Specifications.Trim,规格.里程,年份,型号,品牌1200ml,1,Cherry,SAWD,71062013,Murano,日产2300ml,2,Vanilla,,,,,,,,1200ml,1,Cherry,M,32872014,X5,宝马2300ml,2,Vanilla,,,,,,,
否,其中是品牌的值,型号和年份。输出有一些空白值。@Subham我在回答中包括了一张图片,这样您就能够理解CSV的含义以及型号和年份字段的位置。看起来库中有一个fillGaps选项,可以防止丢失数据。见文件。