【问题标题】:convert nested json to csv using node.js使用 node.js 将嵌套的 json 转换为 csv
【发布时间】:2015-02-07 00:37:21
【问题描述】:

我想使用 node.js 将嵌套的 json 转换为 csv 文件。 我的 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”模块,但它只转换简单结构而不是嵌套结构。 只有“品牌”、“型号”、“年份”和“规格”被转换,“项目”不被转换 这个怎么办???

【问题讨论】:

    标签: json node.js 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 文档。
      猜你喜欢
      • 2021-08-26
      • 1970-01-01
      • 2020-07-01
      • 2018-01-07
      • 2020-10-28
      • 2020-05-06
      • 2020-04-02
      • 2017-06-10
      相关资源
      最近更新 更多