我有以下数据的服务结果。它肯定会扩大。我使用谷歌图表来显示这些数据。但我现在做的是静态的。有没有一种简单的方法可以轻松地将来自服务的数据串转换为json格式。我不想使用foreach循环为谷歌图表数据生成该字符串。我也在我的项目中使用angularjs。感谢您的帮助
[
{
"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 :(得分: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
};
});