将CSV转换为JSON-jQuery [英] Converting CSV to JSON - jQuery

查看:103
本文介绍了将CSV转换为JSON-jQuery的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将数据从csv转换为json,但是我希望数据遵循某种层次结构.

I'm trying to convert a data from csv to json, but I wanted the data to follow some hierarchy.

这是我的CSV

link,model,role,access
link1,model1,role1,true
link1,model1,role2,true
link1,model1,role3,true
link1,model1,role4,true
link1,model2,role1,false
link1,model2,role2,false
link1,model2,role3,false
link1,model2,role4,false
link2,model1,role1,false
link2,model1,role2,true
link2,model1,role3,false
link2,model1,role4,true
link2,model2,role1,false
link2,model2,role2,true
link2,model2,role3,false
link2,model2,role4,true

预期结果

"link1": {
    "model1": {
        "role1": true,
        "role2": true,
        "role3": true,
        "role4": true,
    },
    "model2": {
        "role1": false,
        "role2": false,
        "role3": false,
        "role4": false,
    }
},
"link2": {
    "model1": {
        "role1": false,
        "role2": true,
        "role3": false,
        "role4": true,
    },
    "model2": {
        "role1": false,
        "role2": true,
        "role3": false,
        "role4": true,
    }
}

我试图通过 jquery做到这一点-从平面json创建嵌套的json ,但事实是它只有1个级别,但就我而言,它是2个级别.

I tried to do it from this jquery - creating nested json from flat json, but the thing is it has only 1 level, but in my case it's two levels.

我想这样做,

data.forEach(function(val) {
        newData[val.link] = {val.model :  {val.role: val.access}};
    });

但是不能真正使它工作.我对数据部分还很陌生,任何帮助或建议都将不胜感激.

But couldn't really get it to work. I'm pretty new to the data part, any help or suggestion will be much appreciated.

预先感谢

推荐答案

在这种特殊情况下,解析CSV格式实际上很简单.请参见下面的代码段.

It is actually simple enough to parse the CSV format in this particular case. See the snippet below.

我已将主CSV字符串除以\n以获得行.现在跳过第一行(即标题),您只需要获取每一列的值并将其推入结果obj.

I have split the main CSV string by \n to get the lines. Now skipping the first line (which is the header), you just need to get value of every column and push it into the result obj.

var str = `link,model,role,access
link1,model1,role1,true
link1,model1,role2,true
link1,model1,role3,true
link1,model1,role4,true
link1,model2,role1,false
link1,model2,role2,false
link1,model2,role3,false
link1,model2,role4,false
link2,model1,role1,false
link2,model1,role2,true
link2,model1,role3,false
link2,model1,role4,true
link2,model2,role1,false
link2,model2,role2,true
link2,model2,role3,false
link2,model2,role4,true`;

var lines = str.split('\n');
var obj = {};
// Ignore the first line as it contains only the header info.
for(var i = 1; i < lines.length; i++) {
  var lineItems = lines[i].split(',');
  var link = lineItems[0];
  var model = lineItems[1];
  var role = lineItems[2];
  var roleValue = lineItems[3];
  
  if(obj[link] == undefined) {
    obj[link] = {};
  }
   
  if(obj[link][model] == undefined) {
    obj[link][model] = {};
  }
  
  obj[link][model][role] = roleValue;
}

console.log(obj);

这篇关于将CSV转换为JSON-jQuery的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆