首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CSV合并JSON对象

从CSV合并JSON对象
EN

Stack Overflow用户
提问于 2020-05-18 04:52:07
回答 1查看 34关注 0票数 0

我需要合并一个包含从CSV文件检索到的JSON对象的数组。

CSV文件:

代码语言:javascript
复制
sector,subsector,codigo
sector1,subsector1,001
sector1,subsector2,002 
sector2,subsector1,003 
sector3,subsector1,004
sector3,subsector3,005

这是我的代码:

代码语言:javascript
复制
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))
}

我得到的是:

代码语言:javascript
复制
[ { 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' } ]

我想要得到的是:

代码语言:javascript
复制
{
 "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函数时,它都会把一切都搞乱。

EN

回答 1

Stack Overflow用户

发布于 2020-05-23 04:04:44

非常简单-假设您使用这个Keyang / node-csvtojson

我的原始JSON从您的CSV位置解析为字符串,如下所示:

代码语言:javascript
复制
[{ "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 (?)

代码语言:javascript
复制
{"sector1":
[{"subsector":"subsector1","codigo":1},
{"subsector":"subsector2","codigo":2}],
"sector2":
[{"subsector":"subsector1","codigo":3}],
"sector3":
[{"subsector":"subsector1","codigo":4},
{"subsector":"subsector3","codigo":5}]}

代码语言:javascript
复制
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();
代码语言:javascript
复制
<script src="https://cdn.rawgit.com/Keyang/node-csvtojson/d41f44aa/browser/csvtojson.min.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61858618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档