javascript - 通用深层嵌套数组的 Json 到 CSV 转换的通用方法

标签 javascript arrays json typescript csv

我正在编写一个函数,它应该将通用的深层嵌套 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/

相关文章:

json - 如何根据 Mongoose 中的子文档值检索父文档?

javascript - 无法在modal中输出所有具有相同id的数据

javascript调试问题

r - 从 R 中的列表构建嵌套命名列表

c - C新手;使用数组。不良输出

javascript - 即时创建 json 键

javascript - 有没有办法自动创建用于语言翻译的 .json 文件?

javascript - 将字符串数组中字符串的每个首字母大写

javascript - Vue 单文件组件无法使用 webpack 正确加载

c - 动态内存分配和结构