我使用Newtonsoft.Json API使用以下方法读取了一个Json文件。由于Google日历图表将日期视为新日期(yyyy,mm,dd),因此对日期字符串进行了一些格式化以获得所需的格式。
Json文件样本
[
{
"Date": "2014-January-15",
"Frequencies": 11
},
{
"Date": "2014-January-8",
"Frequencies": 22
}
]
读取文件的方法
public string CalendarChart()
{
Utility utils = new Utility();
List<Item> data = utils.ReadJsonString("CalendarChart");
JavaScriptSerializer jss = new JavaScriptSerializer();
string json = jss.Serialize(data);
return json;
}
填充日历数据表
function drawCalendarChart(jsonObj) {
var months = {
January: 0,
February: 1,
March: 2,
April: 3,
May:4,
June: 5,
July: 6,
August: 7,
September: 8,
October: 9,
November: 10,
December: 11
};
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 splitted = dataValues[i].Date.split('-');
data.addRow([new Date(splitted[0], months.splitted[1], splitted[2]), dataValues[i].Frequencies]);
}
var chart = new google.visualization.Calendar(document.getElementById('chart'));
var options = {
title: "Calendar Chart",
height: 350
};
chart.draw(data, options);
}
基本上我将Date字符串拆分为' - '以获得三个分割值。然后我使用数组将月份字转换为月份数。这应该工作正常,但由于某种原因日历没有显示。我在drawCalendarChart()函数中硬编码日期来测试方法,它工作正常。 我无法确定我是不是错了。