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);

관련 정보