我需要将 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);