2013-10-16 55 views
1

Highcharts所需要求,該系列數據爲以下格式Highcharts時間序列數據由HighCharts

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

我的數據從ASP.net Web應用程序來以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

你有一個運行在客戶端的.Asp,並且你想在服務器端用來自客戶端的數據創建圖形,然後把它發送回客戶端? – Noctis

+0

我的應用程序是一個單頁的網絡應用程序。我需要異步獲取數據。 – lostpacket

+0

我假設你看看這個:http://www.highcharts.com/stock/demo/lazy-loading? – Noctis

回答

-1

所以你基本上要做到這一點:

StringBuilder的某人=新的StringBuilder( 「系列:{數據:」); (「數據中的var time_value_pair)sb.Append(」[「+ time_value_pair.time +」,「+ time_value_pair.value +」]「);

sb.Append(「]}」);

併發送sb.ToString()誰是誰需要的字符串。

2

您可以使用LINQ來實現你以緊湊的方式想要什麼:

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

(不知道你是使用JSON序列化,所以我的示例使用System.Web.Extensions程序的一個)