使用 node.js 将嵌套的 json 转换为 csv
Posted
技术标签:
【中文标题】使用 node.js 将嵌套的 json 转换为 csv【英文标题】:convert nested json to csv using node.js 【发布时间】:2015-02-07 00:37:21 【问题描述】:我想 文件。 我的 JSON 结构:
[
"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”模块,但它只转换简单结构而不是嵌套结构。 只有“品牌”、“型号”、“年份”和“规格”被转换,“项目”不被转换 这个怎么办???
【问题讨论】:
【参考方案1】:你总是有相同数量的列吗? 即:您是否有固定(或最大数量)的项目?
Make;Model;Year;Mileage;Trim;Item_1_flavor_name;Item_1_packSize_name;Item_2_flavor_name;Item_2_packSize_name
【讨论】:
【参考方案2】:您可以使用模块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;
来源:https://www.npmjs.com/package/jsonexport
【讨论】:
对于 json 值,我之前提到过,它不能正常工作。请尝试使用该 json 数组并提出正确的解决方案。 我刚刚用 jsonexport 进行了测试,我得到了这个输出,这是你所期待的吗?Items.packSize.id,Items.packSize.name,Items.flavor.id,Items.flavor.name,Specifications.Trim,Specifications.Mileage,Year,Model,Make 1,200ML,1,Cherry,SAWD,7106,2013,Murano,Nissan 2,300ML,2,Vanilla,,,,, 1,200ML,1,Cherry,M,3287,2014,X5,BMW 2,300ML,2,Vanilla,,,,,
否,make、model和year的值在哪里。输出有一些空白值。
@Subham 我在回答中包含了一张图片,这样您就可以理解 CSV 的含义以及模型和年份字段在哪里。
看起来库有一个 fillGaps 选项可以防止丢失数据。请参阅npmjs.com/package/jsonexport 文档。以上是关于使用 node.js 将嵌套的 json 转换为 csv的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Node.js 将 JSON 数组转换为 CSV?
将 node.js 缓冲区转换为字符串,然后转换为 JSON
如何使用 Node.js 将 CSV 文件转换为 JSON 脚本?