0

我正在使用 Highcharts.js 创建一个时间序列图表,就像本例中的那样:

http://www.highcharts.com/demo/spline-irregular-time

该图表包含一系列日期和数据,我通过对 ac# api 的 ajax 调用访问这些数据,然后返回 json。我已经成功地使用条形图和基本数字数据做到了这一点。但是,我似乎无法像此示例中那样生成日期/时间数据。

我的问题是 - 我如何构建我的 c# poco 以便我可以反过来以正确的日期格式将有效的 json 发送回图表(如这个示例)?我的 poco 充满了来自 SQL Server 数据库的数据。

示例中的 json 数据就是这种格式(见下文)。当我尝试使用http://json2csharp.com/创建此数据的 poco 时,我收到一个错误,即 json 无效。我意识到我可能可以手动创建一个字符串来生成这个日期数据,但如果可能的话我想避免这种情况。

感谢您的帮助或建议。

json样本数据:

series: [{ name: 'Winter 2007-2008', // 定义数据点。所有系列都有一个虚拟年份 // 1970/71,以便在相同的 x 轴上进行比较。注意 // 在 JavaScript 中,1 月从 0 开始,2 月从 1 开始等数据:[ [Date.UTC(1970, 9, 27), 0 ], [Date.UTC(1970, 10, 10), 0.6 ], [Date.UTC(1970, 10, 18), 0.7 ], [Date.UTC(1970, 11, 2), 0.8 ], [Date.UTC(1970, 11, 9), 0.6 ] .... ] }...

4

2 回答 2

0

我确定要创建的最佳对象如下所示:

public class SeriesOfData
{
    public string name { get; set; }
    public List<double[]> data { get; set; }
}

这使我能够转换为 json 并实现一系列点的数组,并且每个系列将是一组 2 个双精度值(自 1970 年以来以 javascript 毫秒为单位的日期时间,然后是相关的值/读数)。由于它们在数组中,因此在呈现为 json 时它们没有“命名”,因此生成的 json 文本采用适当的形式。将这些值分配给数组时也更容易阅读代码,并且我可以通过实例化一个新的 SeriesOfData 对象来根据需要添加额外的数据系列。不确定这是否是最好的方法,但它对我有用。感谢任何关于改进的建议。

于 2013-07-13T15:46:46.397 回答
0

因为这不是正确的 JSON,所以之前使用 jsonlint 或类似的东西。例如正确的 JSON:

[{ "name": "Winter 2007-2008", "data": [ [25833600000, 0 ], [27043200000, 0.6 ], [27734400000, 0.7 ], [28944000000, 0.8 ], [29548800000, 0.6 ]  ] }]

如您所见,更改为:

  • 名称->“名称”
  • “2007-2008 年冬季”->“2007-2008 年冬季”
  • 所有 Date.UTC() 函数到正确的数字

这些数字是 Date.UTC() 返回的值,自 UTC 时间 1970.01.01 00:00:00:000 以来的毫秒数也是如此。

于 2013-07-10T12:32:06.313 回答