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
モデル2、デバイス2、stb1、データ1、データ2、データ3、データ4
モデル2、デバイス2、stb2、データ1、データ2、データ3、データ4
モデル2、デバイス2、stb3、データ1、データ2、データ3、データ4

jsonを変換するコード

csv = 要求('csvtojson')
csvFilePath = './CSVFile.csv'
  .csv()
    .fromFile(csv ファイルパス)
    .then((jsonObj) => {
      Console.log(jsonObj)
      res.send(jsonObj);
    })

しかし、出力は私が期待していたものから離れています。

[ { モデル: 'modelo1',
    デバイス: 'device1',
    STB:「STB1」、
    データ: 'データ1',
    データ1:「データ2」、
    データ2:「データ3」、
    データ 3: 'データ 4'},
  {モード: 'modelo1'、
    デバイス: 'device2',
    STB:「STB1」、
    データ: 'データ1',
    データ1:「データ2」、
    データ2:「データ3」、
    データ 3: 'データ 4'},
  {モード: 'modelo2',
    デバイス: 'device1',
    STB:「STB1」、
    データ: 'データ1',
    データ1:「データ2」、
    データ2:「データ3」、
    データ 3: 'データ 4'},
  {モード: 'modelo2',
    デバイス: 'device1',
    STB:「STB2」、
    データ: 'データ1',
    データ1:「データ2」、
    データ2:「データ3」、
    データ 3: 'データ 4'},
  {モード: 'modelo2',
    デバイス: 'device2',
    STB:「STB1」、
    データ: 'データ1',
    データ1:「データ2」、
    データ2:「データ3」、
    データ 3: 'データ 4'},
  {モード: 'modelo2',
    デバイス: 'device2',
    STB:「STB2」、
    データ: 'データ1',
    データ1:「データ2」、
    データ2:「データ3」、
    データ 3: 'データ 4'},
  {モード: 'modelo2',
    デバイス: 'device2',
    セットトップボックス:「セットトップボックス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);

おすすめ記事