0

我正在尝试将json对象转换DataTable

var obj=  ""   
  {\"Total\":28,\"Submitted\":10,\"Pending\":3,\"Confirmed\":6,\"Selected\":1,
 \"Redirected\":7,\"NotSelected\":1,\"Cancelled\":2,\"Paid\":0}""

我尝试了很多代码,但似乎没有任何效果。我正在尝试String --> Array--> DataTable。但无法在 Array 本身上转换它

obj.replace('{','').replace('}','').split(',');

第二种方法

 var value = JSON.stringify(obj);
                var blkstr = [];
                $.each(value, function (idx2, val2) {
                    blkstr.push(val2);
                });

数组将被转换为

 //Object
   var data = new google.visualization.DataTable();
//Column Declaration        
        data.addColumn('string', 'Legend');

                data.addColumn('number', 'count');
   //Insertion 

如果我通过 object Property 这可以很容易[obj.Total]。但这将很难为未来的变化维护。

4

1 回答 1

0

第一点是您应该使用 JSON.parse 从 json 字符串转换为 javascript 对象和 JSON.stringyfy 以其他方式转换。

var value = JSON.stringify(obj);

然后你可以从数组的第一个对象(如果它的数组)中获取键,然后编写函数从数组中创建列。

function Object_keys(obj) {
        var keys = [], name;
        for (name in obj) {
            if (obj.hasOwnProperty(name)) {
                keys.push(name);
            }
        }
        return keys;
    }
  var keys = Object_keys(value[0]);
  for (var i=0;i<keys.length;i++){
       data.addColumn('string', keys[i]);
  }

但是你应该有一些其他的方式来告诉数据类型的细节。假设您有一些其他具有列名和数据类型的数组,则编写通用函数会更容易。

于 2013-10-11T09:59:02.807 回答