Csv
CSV 到嵌套 JSON
我需要將 CSV 文件轉換為 JSON 輸出,我正在使用來自https://www.npmjs.com/package/csvtojson的 csvtojason 庫,csv 文件:
模式,設備,機頂盒,數據,data1,data2,data3,data4 模型 1,設備 1,機頂盒 1,數據 1,數據 2,數據 3,數據 4 模型 1,設備 2,機頂盒 1,數據 1,數據 2,數據 3,數據 4 模型 2,設備 1,機頂盒 1,數據 1,數據 2,數據 3,數據 4 模型 2,設備 1,機頂盒 2,數據 1,數據 2,數據 3,數據 4 模型 2,設備 2,機頂盒 1,數據 1,數據 2,數據 3,數據 4 模型 2,設備 2,機頂盒 2,數據 1,數據 2,數據 3,數據 4 模型 2,設備 2,機頂盒 3,數據 1,數據 2,數據 3,數據 4
用於轉換 json 的程式碼
csv = 要求('csvtojson') csvFilePath = './CSVFile.csv' csv() .fromFile(csvFilePath) .then((jsonObj) => { 控制台日誌(jsonObj) res.send(jsonObj); })
但輸出與我的預期相差甚遠:
[ {模式:'model1', 設備:“設備1”, 等:'etc1', 數據:“數據1”, 數據1:'數據2', 數據2:'數據3', 數據3:“數據4”}, {模式:'model1', 設備:“設備2”, 等:'etc1', 數據:“數據1”, 數據1:'數據2', 數據2:'數據3', 數據3:“數據4”}, {模式:'modelo2', 設備:“設備1”, 等:'etc1', 數據:“數據1”, 數據1:'數據2', 數據2:'數據3', 數據3:“數據4”}, {模式:'modelo2', 設備:“設備1”, 等:'etc2', 數據:“數據1”, 數據1:'數據2', 數據2:'數據3', 數據3:“數據4”}, {模式:'modelo2', 設備:“設備2”, 等:'etc1', 數據:“數據1”, 數據1:'數據2', 數據2:'數據3', 數據3:“數據4”}, {模式:'modelo2', 設備:“設備2”, 等:'etc2', 數據:“數據1”, 數據1:'數據2', 數據2:'數據3', 數據3:“數據4”}, {模式:'modelo2', 設備:“設備2”, 等:'etc3', 數據:“數據1”, 數據1:'數據2', 數據2:'數據3', 數據3:“數據4”}]
我期待得到這樣的東西:
[{ 模型1:{ 設備1:{ stb1:[數據:'data1',data2:'data2',data3:'data3',data4:'data4'] } 設備2:{ stb1:[數據:'data1',data2:'data2',data3:'data3',data4:'data4'] } } 模型2:{ 設備1:{ stb1:[數據:'data1',data2:'data2',data3:'data3',data4:'data4'] stb2:[數據:'data1',data2:'data2',data3:'data3',data4:'data4'] } 設備2:{ stb1:[數據:'data1',data2:'data2',data3:'data3',data4:'data4'] stb2:[數據:'data1',data2:'data2',data3:'data3',data4:'data4'] stb3:[數據:'data1',data2:'data2',data3:'data3',data4:'data4'] } } }]
有什麼簡單的方法可以做到嗎?
我找到了答案,使用 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);