0

我在控制台中收到 JSON 对象,如下所示: 在此处输入图像描述

我想转换这个JSON 对象,以便将它传递给 Google 的日历图形 API 的addRows()函数。

我的脚本如下:

function drawChart() {
   var dataTable = new google.visualization.DataTable();
   dataTable.addColumn({ type: 'date', id: 'Date' });
   dataTable.addColumn({ type: 'number', id: 'Won/Loss' });
   dataTable.addRows([
        //HERE TO ADD DATA LIKE [new Date(2017, 09, 19),9],[new Date(2017, 09, 20),9]
    ]);

   var chart = new google.visualization.Calendar(document.getElementById('calendar_basic'));

   var options = {
     title: "Daily hours utilization",
     height: 350,
   };

   chart.draw(dataTable, options);

所以基本上我想转换

{today_date:“2017-09-19”,小时:“9”}

[ 新日期(2017, 9, 19), 9 ],

和输出像在此处输入图像描述

4

2 回答 2

1

本质上,您希望将日期字符串转换为日期对象。

实现此目的的一种方法是遍历您的 json 数据结构并从中构建一个 rows 数组。此循环完成后,您可以将 rows 数组传递给addRows方法。

让我们假设您的 json 数据结构存储在一个名为$jsonData的变量中

//Store processed rows in this array
$rows = [];

//Sample json data structure (pull yours from the source)
$jsonData = [
    {
    today_date: "2017-09-19",
    hours: "9"
  },
  {
    today_date: "2017-09-20",
    hours: "9"
  },
];

//Loop over every object within the json data, parsing the date string and
//creating a date object from it.
//Add the date object and the hours field to the rows array
$jsonData.forEach(function($data){
    $dateElements = $data.today_date.split("-");
    $rows.push([
      new Date($dateElements[0], $dateElements[1], $dateElements[2]),
      $data.hours
  ]);
});

//Using your code above, add the rows
var dataTable = new google.visualization.DataTable();
dataTable.addColumn({ type: 'date', id: 'Date' });
dataTable.addColumn({ type: 'number', id: 'Won/Loss' });
dataTable.addRows($rows);

我创建了一个小 jsfiddle,因此您可以从我的测试数据中看到 rows 数组的输出:https ://jsfiddle.net/JParkinson1991/aukwxo6L/

希望这可以帮助!


编辑:来自 Abhijit Kumbhar

在您的指导方针的帮助下,我编辑了我的代码,现在它工作正常,我做了一些更改,如下所示:

最终解决方案:

function drawChart() {
    var rows =[];

    jsDailyCount.forEach(function(data){
        var dateElements = data.today_date.split("-");
        rows.push([
            new Date(dateElements[0], dateElements[1], dateElements[2]),
            parseFloat(data.hours)
        ]);
    });

    var dataTable = new google.visualization.DataTable();
    dataTable.addColumn({ type: 'date', id: 'Date' });
    dataTable.addColumn({ type: 'number', id: 'hours' });
    dataTable.addRows(rows);

    var chart = new google.visualization.Calendar(document.getElementById('calendar_basic'));
    var options = {
        title: "Daily hours utilization",
        height: 350,
    };
   chart.draw(dataTable, options);
于 2017-09-29T07:36:23.207 回答
0

var s = {today_date: "2017-09-19", hours: "9"};
var m = s.hours;
var d = s.today_date.split("-");
alert(d[0] + " " + d[1] + " " + d[2] + " " + m);

在您的脚本中使用这些值而不是警报。

于 2017-09-29T07:27:18.683 回答