如何将json数组转换为具有特定属性的CSV数据

问题描述 投票:0回答:2

我正在研究节点Javascript应用程序。我有一个数组,我想将此数组转换为具有特定属性的CSV数据。

var data = 
[ 
  {
    "Name":"nom1",
    "Division":"first",
    "Cities":['city1','city2']
  },
  {
    "Name":"nom2",
    "Division":"first",
    "Cities":['city4','city5']
  }
]

我希望将此数组转换为,

 Name,Cities

 nom1,city1

 nom1,city2 

 nom2,city3 

 nom2,city4 

我尝试使用npm包json2csv,它在每一行上重复标题

script.js

const { Parser, transforms: { unwind } } = require('json2csv');
const fs = require('fs');
const path = require('path');

let outputFile = path.resolve(__dirname + path.sep + './output.csv');

const myData = [ 
    {
      "Name":"nom1",
      "Division":"first",
      "Cities":['city1','city2']
    },
    {
      "Name":"nom2",
      "Division":"first",
      "Cities":['city4','city5']
    }
  ]

const fields = ['Name','Cities'];
const transforms = [unwind({ paths: ['Cities'] })];

for ( i=0; i < 2; i++ ) {

    const json2csvParser = new Parser({ fields, transforms });
    const csv = json2csvParser.parse(myCars[i]);
    fs.appendFileSync(outputFile,csv);
}

但是这会创建表单数据,而不是我需要的数据

"Name","Cities"
"nom1","city1"
"nom1","city2""Name","Cities"
"nom2","city4"
"nom2","city5"

我的要求是转换数据,我愿意使用任何新技术或其他npm软件包。谁能建议我该怎么办?

javascript node.js csv npm
2个回答
1
投票

问题是因为您正在遍历它,它将多次创建标头。


0
投票

删除循环并传递整个数据数组解决了此问题

const { Parser, transforms: { unwind } } = require('json2csv');
const fs = require('fs');
const path = require('path');

let outputFile = path.resolve(__dirname + path.sep + './output.csv');

const myData = [ 
    {
      "Name":"nom1",
      "Division":"first",
      "Cities":['city1','city2']
    },
    {
      "Name":"nom2",
      "Division":"first",
      "Cities":['city4','city5']
    }
  ]

const fields = ['Name','Cities'];
const transforms = [unwind({ paths: ['Cities'] })];


    const json2csvParser = new Parser({ fields, transforms });
    const csv = json2csvParser.parse(myCars);
    fs.appendFileSync(outputFile,csv);

© www.soinside.com 2019 - 2024. All rights reserved.