首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON到CSV文件使用json2csv nodejs

JSON到CSV文件使用json2csv nodejs
EN

Stack Overflow用户
提问于 2015-01-05 23:00:46
回答 3查看 9.2K关注 0票数 2

我是新学的node.js,我想使用json2csv节点模块将JSON对象解析为CSV文件。json2csv只支持平面结构,其中字段是json根的直接子级。我找到了how-to-parse-json-object-to-csv-file-using-json2csv-nodejs-module主题,并将json2csv的createColumnContent函数更改为读取我的json文件的对象元素。但是我的json文件有数组元素,如下所示:

代码语言:javascript
复制
[
{
    "firstName": "John",
    "lastName": "Smith",
    "age": 25,
    "address": {
        "streetAddress": "21 2nd Street",
        "city": "New York",
        "state": "NY",
        "postalCode": "10021"
    },
    "phoneNumber": [
        {
            "type": "home",
            "number": "212 555-1234"
        },
        {
            "type": "fax",
            "number": "646 555-4567"
        }
    ]
},
{
    "firstName": "John",
    "lastName": "Smith",
    "age": 25,
    "address": {
        "streetAddress": "21 2nd Street",
        "city": "New York",
        "state": "NY",
        "postalCode": "10021"
    },
    "phoneNumber": [
        {
            "type": "home",
            "number": "212 555-1234"
        },
        {
            "type": "fax",
            "number": "646 555-4567"
        }
    ]
}

]

我也想要这样的东西

我这样调用json2csv:

代码语言:javascript
复制
json2csv({
        data: body.issues, 
        fields: ['firstName','lastname','age','address.city', 'phoneNumber[?].type', 'phoneNumber[?].number']
    }, 
    function(err, csv) {
        if (err) console.log(err);
        fs.writeFile('sample.csv', csv, function(err) {
            if (err) throw err;
            console.log('file saved');
        });  
    }
);

如何读取数组并添加到csv文件。谢谢

EN

回答 3

Stack Overflow用户

发布于 2015-04-12 01:30:53

我刚刚在Node.js中发布了一个模块,可以让这个过程变得简单

代码语言:javascript
复制
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);
});

输出:

代码语言:javascript
复制
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

票数 6
EN

Stack Overflow用户

发布于 2015-01-06 01:36:20

您最好自己转换数据,而不是覆盖json2csv包的一部分。然后,您可以将平面数据结构传递给json2csv进行格式化。

代码语言:javascript
复制
    var xform = [];
    for (var i=0, max=data.issuelinks.length; i<max; i++ ) {
            xform[xform.length] = { id:data.id, progress:data.progress.percent, issuelinkid:data.issuelinks[i].id, issuelinktypeid:data.issuelinks[i].type.id } 
    } 
    console.log(xform);
票数 2
EN

Stack Overflow用户

发布于 2020-12-24 16:15:50

从json2csv v5+开始,您可以使用模块本身提供的展平和展开来完成此操作。

你可以这样使用它-

代码语言:javascript
复制
const {
  Parser,
  transforms: { flatten, unwind }
} = require("json2csv");

try {
  const parser = new Parser({
    fields: ["firstColumn", "b.secondColumn", "cars.0.brand", "cars.1.brand"],
    transforms: [flatten({ arrays: true }), unwind({ paths: ["cars"] })]
  });
  const csv = parser.parse({
    firstColumn: "first data",
    b: {
      secondColumn: "second data"
    },
    cars: [{ brand: "AUDI" }, { brand: "TOYOTA" }]
  });
  console.log(csv);
//   OUTPUT:
//  "firstColumn","b.secondColumn","cars.0.brand","cars.1.brand"
//  "first data","second data","AUDI","TOYOTA"
} catch (err) {
  console.log(err);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27782140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档