将表数组转换为JSON对象

时间:2017-05-17 06:05:55

标签: javascript

我正在开发一个将表数组转换为JSON的函数,这是我的代码。我检查过strJSON是我想要的JSON格式,但它是一个字符串而不是JSON对象。当我尝试使用“eval”将其转换为JSON时,会显示一条错误消息,提示“Darren未定义”。我不知道发生了什么。

var myArray=[["Name","Age","Gender"],["Darren",31,"Male"],["Gakki",25,"Female"]];

//expected output
var myJSON=[{"Name":"Darren","Age":31,"Gender":"Male"},{"Name":"Gakki","Age":25,"Gender":"Female"}];

function convertJSON(tableData){
    var objJSON=[];
    var strJSON=[];
    tableData.forEach(function(rowData,i){
        if (i==0){
            rowData.forEach(function(cellData){
                head.push(cellData);
            });
        }
        else{
            var objData=[];
            var objEntry=[];
            rowData.forEach(function(cellData,j){
                 objData=head[j] + ":" + cellData;
                objEntry.push(objData);
             });
            strJSON.push("{" + objEntry + "}");
        }
    });
    objJSON=eval("[" + strJSON + "]");
    return objJSON
}

3 个答案:

答案 0 :(得分:2)

  1. 获取1个元素并按Array#shift
  2. 删除原始数组
  3. 然后使用Array#map构建您的预期结果
  4. var myArray=[["Name","Age","Gender"],["Darren",31,"Male"],["Gakki",25,"Female"]];
    
    var properties = myArray.shift();
    
    var result = myArray.map( a => {
      var newObj = {};
      properties.forEach ( (p, idx) => {
        newObj[p] = a[idx];
      });
      return newObj;
    })
    
    console.log(result);

答案 1 :(得分:0)

    function html2json() {
   var json = '{';
   var otArr = [];
   var tbl2 = $('#dest_table tr').each(function(i) {        
      x = $(this).children();
      var itArr = [];
      x.each(function() {
         itArr.push('"' + $(this).text() + '"');
      });
      otArr.push('"' + i + '": [' + itArr.join(',') + ']');
   })
   json += otArr.join(",") + '}'

   return json;
}

答案 2 :(得分:0)

请勿尝试手动创建JSON字符串。将普通对象放在一起并使用JSON.stringify进行转换。



var myArray=[["Name","Age","Gender"],["Darren",31,"Male"],["Gakki",25,"Female"]];

//expected output
var myJSON=[{"Name":"Darren","Age":31,"Gender":"Male"},{"Name":"Gakki","Age":25,"Gender":"Female"}];

function convertJSON(tableData){
    var keys = tableData[0],
        objects = [];
        
    for(var i = 1; i < tableData.length; i++){
        var rowObject = {};
        tableData[i].forEach(function(item, index){
            rowObject[keys[index]] = item;
        });
        objects.push(rowObject);
    }
    
    return JSON.stringify(objects);
}

document.write(convertJSON(myArray));
&#13;
&#13;
&#13;