Json字符串到Google日历图表

时间:2014-12-03 20:16:12

标签: javascript c# .net json google-visualization

我有一个Json字符串,我想在Google日历图表中显示。 这是我用作样本数据的Json字符串。

[
    {
        "Date": "2014-January-15",
        "Frequencies": 11
    },
    {
        "Date": "2014-January-8",
        "Frequencies": 22
    },
]

然后我用这个方法绘制图形。

function drawCalendarChart(jsonObj) {

    var dataValues = eval(jsonObj)
       var data = new google.visualization.DataTable(dataValues);
       data.addColumn({ type: 'date', id: 'Date' });
       data.addColumn({ type: 'number', id: 'Reports' });

       for (var i = 0; i < dataValues.length; i++) {

           var date = new Date(dataValues[i].Date);
           alert("This is the date " + date + "and frequency " + dataValues[i].Frequencies)

           //           data.addRow([new Date(dataValues[i].Date),  dataValues[i].Frequencies]);

       }
       var options = {
         title: "Calendar Chart",
         height: 350
       };
       var chart = new google.visualization.Calendar(document.getElementById('chart'));

       chart.draw(data, options);
       var table = new google.visualization.Table(document.getElementById('table'));
       table.draw(data, { showRowNumber: true });
   }

警报为频率提供了正确的值,但日期的日期无效。 由于日期无效,日历图表仅显示标题。 数据表显示频率的正确值和日期的NaN,NaN。 Data Table Result

我尝试用几种方式格式化日期,但我无法完成这项工作。现在我更加困惑,因为即使警报至少没有显示文件中的数据,例如2014年一月12。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

我认为日期应格式如下:&#34; yyyy-mm-dd&#34;。

以下是数据应该是什么样子:

[
    {
        "Date": "2014-01-15",
        "Frequencies": 11
    },
    {
        "Date": "2014-01-8",
        "Frequencies": 22
    },
]

答案 1 :(得分:0)

您的代码可以正常运行,但js规范并不保证。 例如,请阅读mozilla specifications

无论如何,您可以尝试像这样转换日期:

    function parseDate(input){
    var pattern=/(.*?)\-(.*?)\-(.*?)$/;
    var result = input.replace(pattern,function(match,p1,p2,p3){
        return (p3<10?"0"+p3:p3)+" "+p2.substring(0, 3)+" "+p1;
    });
    return result;
}

在您的代码中:

var date = new Date(parseDate(dataValues[i].Date));