3

我有以下数据的服务结果。它肯定会扩大。我使用谷歌图表来显示这些数据。但我现在是静态的。有没有一种简单的方法可以轻松地将来自服务的一堆数据转换为 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}

         ]}
    ]};
4

1 回答 1

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
    };
});
于 2013-05-07T13:31:39.007 回答