来自C#的Highcharts时间序列数据,采用HighCharts所需的格式

时间:2013-10-16 21:39:15

标签: c# highcharts

Highcharts要求系列数据采用此格式

series : {
 data : [[x1,y1],[x2,y2],[x3,y3],[x4,y4],[x5,y5]]
}

我的数据来自ASP.net网络应用程序,形式为JSON,即

[{"time": x1, "value" : y1},{"time": x2, "value" : y2}]

为了使数据与Highcharts一起使用,我必须使用JavaScript手动将对象作为数组插入空数组中。

var tempData = [];
$.each(data, function(i, item) {
    tempData.push([item.time,item.value]);
});​
//then add the series using tempData

理想情况下,我不希望在浏览器上执行此操作,因为它会降低客户端应用程序的性能,并且我使用大量数据。

在C#方面,这就是我所拥有的,

public class TimeValuePair
{
  double time {get;set;}
  double value{get;set;}
}
List<TimeValuePair> data= dataFromServer;

我将数据作为;

返回
return Json(data, JsonRequestBehavior.AllowGet);

处理这个问题的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用LINQ以紧凑的方式实现您想要的目标:

return new JavaScriptSerializer().Serialize(data.Select(t => new object[] {t.Time, t.Value}))

(不确定您使用的是哪个Json序列化程序,所以我的示例使用了System.Web.Extensions中的那个)

答案 1 :(得分:-1)

所以你基本上想要这样做:

  

StringBuilder sb = new StringBuilder(“series:{data:[”);

     

foreach(数据中的var time_value_pair)sb.Append(“[”+   time_value_pair.time +“,”+ time_value_pair.value +“]”);

     

sb.Append( “]}”);

并发送任何需要该字符串的sb.ToString()