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

本文关键字:HighCharts 采用 格式 数据 Highcharts 序数 来自 | 更新日期: 2023-09-27 18:35:37

Highcharts要求序列数据采用这种格式

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

我的数据以 JSON 的形式来自 ASP.net Web 应用程序,即

[{"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);

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

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

您可以使用 LINQ 以紧凑的方式实现所需的内容:

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

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

所以你基本上想这样做:

StringBuilder

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

foreach (var time_value_pair in data) sb.追加("[" + time_value_pair.time + "," + time_value_pair.value + "]");

某人。追加("]}");

并发送sb.ToString()谁需要字符串。