来自 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);
处理这个问题的正确方法是什么?
您可以使用 LINQ 以紧凑的方式实现所需的内容:
return new JavaScriptSerializer().Serialize(data.Select(t => new object[] {t.Time, t.Value}))
(不确定您使用的是哪种 Json 序列化程序,所以我的示例使用 System.Web.Extensions 中的序列化程序)
所以你基本上想这样做:
StringBuildersb = new StringBuilder("series : {data : [");
foreach (var time_value_pair in data) sb.追加("[" + time_value_pair.time + "," + time_value_pair.value + "]");
某人。追加("]}");
并发送sb.ToString()
谁需要字符串。