[英]Consolidate JSON objects from CSV
我需要合并一个数组,其中包含从 CSV 文件中检索到的 JSON 对象。
CSV 文件:
sector,subsector,codigo
sector1,subsector1,001
sector1,subsector2,002
sector2,subsector1,003
sector3,subsector1,004
sector3,subsector3,005
这是我的代码:
const csvtojson = function(){
let pathToCsv = './dummy-sectores.csv'
csv({
colParser:{
"sector.subsector":{
flat: true,
cellParser: "subsector"
}
}
})
.fromFile(pathToCsv)
.then((json) => {
const n = {}
json.forEach((a)=>{
n.sector = a.sector
n.subsector = a.subsector
})
console.log(n)
})
.catch((e) => console.log(e))
}
我得到什么:
[ { codigo: '001',
sector: 'sector 1',
subsector: 'sector 1 subsector 1' },
{ codigo: '002',
sector: 'sector 1',
subsector: 'sector 1 subsector 2' },
{ codigo: '003',
sector: 'sector 2',
subsector: 'sector 2 subsector 1' },
{ codigo: '004',
sector: 'sector 3',
subsector: 'sector 3 subsector 1' },
{ codigo: '005',
sector: 'sector 3',
subsector: 'sector 3 subsector 2' } ]
我想要得到什么:
{
"sector1":
[{"subsector": "subsector1", "codigo": 1},
{"subsector": "subsector2", "codigo": 2}],
"sector2":
[{"subsector": "subsector1", "codigo": 3}],
"sector3":
[{"subsector": "subsector1", "codigo": 4},
{"subsector": "subsector2", "codigo": 5}]
}
每当我尝试使用 map 或 forEach function 时,它都会搞砸一切。
很简单 - 假设你使用这个Keyang / node-csvtojson
我的原始 JSON 从您的 CSV 解析到字符串看起来像:
[{ "sector": "sector1", "subsector": "subsector1", "codigo": "001" },
{ "sector": "sector1", "subsector": "subsector2", "codigo": "002" },
{ "sector": "sector2", "subsector": "subsector1", "codigo": "003" },
{ "sector": "sector3", "subsector": "subsector1", "codigo": "004" },
{ "sector": "sector3", "subsector": "subsector3", "codigo": "005" }]
格式不完全相同,但看起来几乎像您想要的 JSON(?)
{"sector1":
[{"subsector":"subsector1","codigo":1},
{"subsector":"subsector2","codigo":2}],
"sector2":
[{"subsector":"subsector1","codigo":3}],
"sector3":
[{"subsector":"subsector1","codigo":4},
{"subsector":"subsector3","codigo":5}]}
const csvtojson = function() { let CSV = 'sector,subsector,codigo\nsector1,subsector1,001\nsector1,subsector2,002\nsector2,subsector1,003\nsector3,subsector1,004\nsector3,subsector3,005'; csv({ colParser: { "sector.subsector": { flat: true, cellParser: "subsector" } } }).fromString(CSV).then((json) => { const n = {} json.forEach((a) => { n[a.sector] = n[a.sector] || []; n[a.sector].push(a); delete a.sector; a.codigo = parseInt(a.codigo); }) console.log(JSON.stringify( n ).replace(/:\[/g, ':\n[').replace(/([^"]),([\{"])/g, '$1,\n$2')) }).catch((e) => console.log(e)) } csvtojson();
<script src="https://cdn.rawgit.com/Keyang/node-csvtojson/d41f44aa/browser/csvtojson.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.