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);
处理这个问题的正确方法是什么?
答案 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()
。