如何构建c#poco以便它与Highcharts中的时间序列json数据一起使用?

时间:2013-07-10 01:59:00

标签: json highcharts poco

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

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

此图表包含一系列日期和数据,我通过ajax调用c#api访问,然后返回json。我用条形图和基本数字数据成功完成了这项工作。但是,我似乎无法像此示例中那样生成日期/时间数据。

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

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

感谢您的帮助或建议。

json示例数据:

系列:[{             名称:'冬季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]                 ....             ]         } ...

2 个答案:

答案 0 :(得分: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以来的毫秒数。

答案 1 :(得分:0)

我确定要创建的最佳对象看起来像这样:

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

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