JSON对象为Google.visualization.DataTable

时间:2013-10-11 09:05:38

标签: jquery

我正在尝试将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。但无法在数组本身上转换它

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 

如果按照对象Property [obj.Total]进行操作,这可能非常简单。但是这对于未来的变化很难维持。

1 个答案:

答案 0 :(得分: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]);
  }

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