我正在编写一个函数,它应该将通用的深层嵌套 JSON 对象级别转换为 JS 或 TypeScript 中的 CSV 文件。 我尝试了几个库,但不知何故,它们无法按照我希望它正确展开嵌套 JSON 的方式工作。代码应该展开这个输入:
{
[
{
app: "app1",
device: [
"c1",
"c2",
"c3",
"c4"
]
},
{
app: "app2",
device: [
"b1",
"b2"
]
}
]
}
进入这个预期结果:
app;device
app1;c1
app1;c2
app1;c3
app1;c4
app2;b1
app2;b2
现在我正在使用这段代码,但结果并不像预期的那样:
private ConvertToCSV(json: string, fields: string[]): string {
const Json2csvParser = require("json2csv").Parser;
let options: {};
options = { fields };
const parser = new Json2csvParser(options);
const csv = parser.parse(JSON.parse(json));
console.log(JSON.parse(json));
console.log(csv);
return csv;
}
我现在的结果是这样的:
"app","device"
"app1","[""c1"",""c2"",""c3"",""c4""]"
"app2","[""b1"",""b2""]"
最佳答案
是的,您可以这样做——它在文档中是正确的 unwind function尽管您可能需要添加一个转换器来完全按照您想要的方式对其进行格式化。看一看:
const data: any = [
{
app: "app1",
device: [
"c1",
"c2",
"c3",
"c4"
]
},
{
app: "app2",
device: [
"b1",
"b2"
]
}
];
function ConvertToCSV(json: string, fields: any): string {
const Json2csvParser = require("json2csv").parse;
let options: {};
options = fields;
const csv = Json2csvParser(JSON.parse(json), options);
console.log(JSON.parse(json));
console.log(csv);
return csv;
}
ConvertToCSV(JSON.stringify(data), {fields: ['app', 'device'], unwind: 'device'});
如果这能解决您的问题,请告诉我,如果不能,请告诉我。我对这个库有一些经验,也许可以提供帮助
关于javascript - 通用深层嵌套数组的 Json 到 CSV 转换的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54903092/