繁体   English   中英

合并 CSV 中的 JSON 对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM