CSV 到嵌套 JSON

CSV 到嵌套 JSON

我需要将 CSV 文件转换为 JSON 输出,我使用的是 csvtojason 库https://www.npmjs.com/package/csvtojson,csv 文件:

模式、设备、机顶盒、数据、数据1、数据2、数据3、数据4
型号1、设备1、机顶盒1、数据1、数据2、数据3、数据4
型号1、设备2、stb1、数据1、数据2、数据3、数据4
modelo2、设备1、stb1、数据1、数据2、数据3、数据4
modelo2、设备1、stb2、数据1、数据2、数据3、数据4
modelo2、设备2、stb1、数据1、数据2、数据3、数据4
modelo2、设备2、stb2、数据1、数据2、数据3、数据4
modelo2、设备2、stb3、数据1、数据2、数据3、数据4

用于转换json的代码

csv = 要求('csvtojson')
csvFilePath = './CSVFile.csv'
  .csv()
    .fromFile(csv文件路径)
    .then((jsonObj) => {
      控制台.log(jsonObj)
      res.send(jsonObj);
    })

但输出与我的预期相差甚远:

[ { 模式:'modelo1',
    设备:'设备1',
    机顶盒:'机顶盒1',
    数据:'数据1',
    数据1:'数据2',
    数据2:'数据3',
    数据3: '数据4' },
  { 模式:'modelo1',
    设备:'设备2',
    机顶盒:'机顶盒1',
    数据:'数据1',
    数据1:'数据2',
    数据2:'数据3',
    数据3: '数据4' },
  { 模式:'modelo2',
    设备:'设备1',
    机顶盒:'机顶盒1',
    数据:'数据1',
    数据1:'数据2',
    数据2:'数据3',
    数据3: '数据4' },
  { 模式:'modelo2',
    设备:'设备1',
    机顶盒:'机顶盒2',
    数据:'数据1',
    数据1:'数据2',
    数据2:'数据3',
    数据3: '数据4' },
  { 模式:'modelo2',
    设备:'设备2',
    机顶盒:'机顶盒1',
    数据:'数据1',
    数据1:'数据2',
    数据2:'数据3',
    数据3: '数据4' },
  { 模式:'modelo2',
    设备:'设备2',
    机顶盒:'机顶盒2',
    数据:'数据1',
    数据1:'数据2',
    数据2:'数据3',
    数据3: '数据4' },
  { 模式:'modelo2',
    设备:'设备2',
    机顶盒:'机顶盒3',
    数据:'数据1',
    数据1:'数据2',
    数据2:'数据3',
    数据3:'数据4'}]

我期待得到这样的东西:

[{
    模型1:{
        设备1:{
            stb1:[数据:'数据1',数据2:'数据2',数据3:'数据3',数据4:'数据4']
        }
        设备2:{
            stb1:[数据:'数据1',数据2:'数据2',数据3:'数据3',数据4:'数据4']
        }
    }
    模型2:{
        设备1:{
            stb1: [数据:'数据1',数据2:'数据2',数据3:'数据3',数据4:'数据4']
            stb2: [数据:'数据1',数据2:'数据2',数据3:'数据3',数据4:'数据4']
        }
        设备2:{
            stb1: [数据:'数据1',数据2:'数据2',数据3:'数据3',数据4:'数据4']
            stb2: [数据:'数据1',数据2:'数据2',数据3:'数据3',数据4:'数据4']
            stb3: [数据:'数据1',数据2:'数据2',数据3:'数据3',数据4:'数据4']
        }
    }
}]

知道有没有一种简单的方法可以做到这一点?

答案1

我找到了答案,使用 D3 库非常简单

https://d3js.org/d3-collection.v1.min.js

在我的 .js 文件上:

            var groupedJson = d3.nest()
                .key(function (d) { return d.model; })
                .key(function (d) { return d.device; })
                .key(function (d) { return d.stb; })
                .entries(json);
            console.log(groupedJson);

相关内容