繁体   English   中英

将 CSV 转换为 JSON,包括嵌套的对象数组

[英]Convert CSV to JSON including nested arrays of objects

在 Excel 中,我创建了一个电子表格,我想将它转换为我的 VS Code 项目的 JSON。 我目前只是使用在线 CSV 到 JSON 转换器https://www.convertcsv.com/csv-to-json.htm ,但是我的问题是我似乎无法找到一种方法来格式化它以便它使用对象数组。 例如

"arr": [
    {"id":1, "name": "obj1"},
    {"id":2, "name": "obj2"},
]

如果我像这样在 Excel 中格式化: 在此处输入图像描述

输出如下所示:

[
 {
   "arr": {
      "id": [
         1,
         2
      ],
      "name": [
         "obj1",
         "obj2"
      ]
   }
}
]

有谁知道如何在 Excel 中格式化以获得所需的对象数组? 否则有人可以为我指出正确的方向来正确转换它的脚本吗? 谢谢!

编辑要补充以上内容,我应该更清楚。 我知道 Excel 电子表格中的初始行在解析为 JSON 时将转换为对象,但我想要实现的是转换为带有嵌套数组的 JSON。 因此,例如我想要的输出是:

"arr":[
     {
       "id": 1, 
       "objects":[
          {"id": 1, "name": "obj1"}
          {"id": 2, "name": "obj2"}
       ]
     }
     {
       "id": 2, 
       "objects":[
          {"id": 1, "name": "obj1"}
       ]
     }
]

例如,给定以下 CSV 数据:

  id,name
  1,foo
  2,bar

您可以按如下方式对其进行解析,其中csv是包含 CSV 数据的字符串:

  // split whole CSV into separated lines
  const lines = csv.split("\n");
  
  // split the first line to get properties count and names
  const keys = lines[0].split(",");
  
  const array = [];
  
  // iterate over the rest of lines, notice we start at 1
  for(let i = 1 ; i < lines.length; ++i) {
    
    // split line to get values
    const values = lines[i].split(",");
    
    // create new object
    const dict = {};
    
    // fill object with keys and values
    for(let k = 0; k < keys.length; ++k) {
      dict[keys[k]] = values[k];
    }
    
    // add object to array
    array.push(dict);
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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