1

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);

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

4

2 回答 2

2

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

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

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

于 2013-11-29T15:06:13.757 回答
-1

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

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

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

sb.Append("]}");

并发送给sb.ToString()需要字符串的人。

于 2013-10-17T03:15:51.387 回答