2013-10-11 64 views
0

我試圖一個json對象轉換爲DataTableJSON對象Google.visualization.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 

這可能是很容易的,如果我的對象去物業[obj.Total] 。但是這對於未來的變化很難保持。

+0

您的'obj'值有大量未轉義的雙引號,因此您必須收到語法錯誤。 –

+0

服務器端或jQuery表插件中的DataTable? –

+0

它不是一個插件或服務器端。這些是'Google.visualization.DataTable' – Andrew

回答

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]); 
    } 

但你應該有一些其他的方式來告訴數據類型的細節也。假設你有一些其他具有列名和數據類型的數組,編寫泛型函數會更容易。