2013-05-07 50 views
3

我有以下數據的服務結果。它肯定會擴大。我使用谷歌圖表來顯示這些數據。但我目前是靜態的。有一種簡單的方法可以將我的服務中的一堆數據輕鬆轉換爲json格式。我不想使用foreach循環爲谷歌圖表數據生成該字符串。我也在我的項目中使用angularjs。感謝所有幫助將服務數據轉換爲Google圖表數據格式 - Angularjs - JSON

[ 
    { 
    "date": "2013-05-01", 
    "amount": null, 
    "imprCount": 120, 
    "clickCount": 141 
    }, 
    { 
    "date": "2013-05-02", 
    "amount": null, 
    "imprCount": 1122, 
    "clickCount": 125 
    }, 
    { 
    "date": "2013-05-03", 
    "amount": null, 
    "imprCount": 1782, 
    "clickCount": 1154 
    } 
] 

//Chart Data 
chartIncome.data = {"cols": [ 
     {/*id: "month",*/ label: "Month", type: "string"}, 
     {/*id: "income-id",*/ label: "Income", type: "number"} 
    ], "rows": [ 
     {c: [ 
      {v: "2013-05-01"}, 
      {v: 12} 
     ]}, 
     {c: [ 
      {v: "2013-05-02"}, 
      {v: 25} 
     ]}, 
     {c: [ 
      {v: "2013-05-03"}, 
      {v: 203} 

     ]}, 
     {c: [ 
      {v: "2013-05-04"}, 
      {v: 1002} 

     ]} 
    ]}; 
+0

你你剛纔問如何將數據數組轉換成chartIncome.data格式? – lucuma 2013-05-07 13:14:41

回答

6

你將不得不處理你的數據的一種方法或另一種,它似乎最簡單的方法是隻創建一個函數來JSON數據陣列轉換成谷歌圖表正在尋找的格式。我知道你說過你不想使用foreach循環,但爲了轉換你將要處理的數據。像這樣的功能可以工作。

function processArray(json) { 
    var chartData = []; 
    for (var i = 0, l = json.length; i < l; i++) { 
    chartData.push({ c: [ { v: json[i].date, {v:json[i].clickCount}]}); 
    } 
    return chartData; 
} 

假設你從一個控制器是這樣做的角度服務電話:

Service.getData().then(function(data) { 
    var chartData = processArray(data); 
    chartIncome.data = {"cols": [ 
     { label: "Month", type: "string"}, 
     { label: "Income", type: "number"} 
     ], "rows": chartData 
    }; 
});