2014-01-22 24 views
2

我想在C#中創建這個數組,並通過Json將它發送給javascript。 我怎麼可以用C#編寫這個?如何轉換或編寫C#中的這個Javascript數組#

這是Javascript中的數組;

var aa = [{ 
       name: 'D1', 
       data: [ 
       [Date.UTC(2010, 0, 12, 12, 10, 10), 1], 
       [Date.UTC(2010, 0, 13, 18, 01, 04), 1], 
       [Date.UTC(2010, 0, 14, 14, 11, 44), 0], 
       [Date.UTC(2010, 0, 15, 14, 11, 44), 1], 
       [Date.UTC(2010, 0, 16, 14, 18, 44), 1], 
       [Date.UTC(2010, 0, 17, 15, 11, 44), 0], 
       [Date.UTC(2010, 0, 18, 16, 15, 44), 1] 
      ] 
      }, { 
       name: 'D2', 
       data: [ 
       [Date.UTC(2010, 0, 12), 1], 
       [Date.UTC(2010, 0, 13), 0], 
       [Date.UTC(2010, 0, 14), 0], 
       [Date.UTC(2010, 0, 15), 0], 
       [Date.UTC(2010, 0, 16), 1], 
       [Date.UTC(2010, 0, 16), 0], 
       [Date.UTC(2010, 0, 17), 0], 
       [Date.UTC(2010, 0, 18), 0] 
      ] 
      }]; 

我試着在C#創建相同的數組:

public class chData 
    { 
     public DateTime Date { get; set; } 
     public int value { get; set; } 
    } 

    public class finallist 
    { 
     public string name { get; set;} 
     public List<chData> data { get; set;} 
    } 

    List<chData> D1data= new List<chData> 
     { 
      new chData {Date = new DateTime(2014, 1, 1, 00,00,01) , value = 2}, 
      new chData {Date = new DateTime(2014, 1, 1, 00,00,05), value = 1}, 
      new chData {Date = new DateTime(2014, 1, 1, 00,00,10), value = 1}, 
      new chData {Date = new DateTime(2014, 1, 1, 00,00,15), value = 0}, 
      new chData {Date = new DateTime(2014, 1, 1, 00,00,20), value = 1}, 
      new chData {Date = new DateTime(2014, 1, 1, 00,00,25), value = 3}, 
      new chData {Date = new DateTime(2014, 1, 1, 00,00,30), value = 2}, 
      new chData {Date = new DateTime(2014, 1, 1, 00,00,35), value = 1}, 
      new chData {Date = new DateTime(2014, 1, 1, 00,00,40), value = 1}, 
      new chData {Date = new DateTime(2014, 1, 1, 00,00,45), value = 3}, 
      new chData {Date = new DateTime(2014, 1, 1, 00,00,50), value = 1}, 
      new chData {Date = new DateTime(2014, 1, 1, 00,01,15), value = 2} 

      }; 

List<finallist> Finaldata= new List<finallist>(); 
Finaldata.Add(new finallist { name = "D1", data = D1data}); 
return JsonConvert.SerializeObject(Finaldata); 

我與結構在C#中數組的一些問題,這是行不通的! 我相信我在C#代碼中做了一些錯誤。

這是我的javascript代碼

var aa =[];  
$(document).ready(function() { 
       $.ajax({ 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        url: "Default.aspx/getData", 
        data: "{}", 
        dataType: "json", 
        success: function (data) { 
         aa = eval((data.d).replace(/\/Date\((.*?)\)\//gi, "new Date($1)")); 
         }, 
        error: function (result) { 
         alert('#Err'); 
        } 
       }); 
      }); 
+0

你的結果JSON數組是不正確的?你可以添加你的代碼生成? – AlG

+0

鑑於您在JavaScript中使用了'Date.UTC',您可能希望使用帶有DateTimeKind的DateTime構造函數,並指定您希望將其作爲UTC。 – Lloyd

+0

你是什麼意思「它不工作」?看起來你翻譯得很好。 –

回答

3

要獲得你打算的JSON結構,你需要改變你的代碼,使得的每個元素屬性是一個對象數組:

public class finallist { 
    public string name { get; set; } 
    public List<object[]> data { get; set; } 
} 

var D1data = new List<object[]> 
{ 
    new object[] { new DateTime(2014, 1, 1, 00,00,05), 1}, 
    new object[] { new DateTime(2014, 1, 1, 00,00,10), 1}, 
    new object[] { new DateTime(2014, 1, 1, 00,00,15), 0}, 
    new object[] { new DateTime(2014, 1, 1, 00,00,20), 1}, 
    new object[] { new DateTime(2014, 1, 1, 00,00,25), 3}, 
    new object[] { new DateTime(2014, 1, 1, 00,00,30), 2}, 
    new object[] { new DateTime(2014, 1, 1, 00,00,35), 1}, 
    new object[] { new DateTime(2014, 1, 1, 00,00,40), 1}, 
    new object[] { new DateTime(2014, 1, 1, 00,00,45), 3}, 
    new object[] { new DateTime(2014, 1, 1, 00,00,50), 1}, 
    new object[] { new DateTime(2014, 1, 1, 00,01,15), 2} 

}; 

List<finallist> Finaldata = new List<finallist>(); 
Finaldata.Add(new finallist { name = "D1", data = D1data }); 
return JsonConvert.SerializeObject(Finaldata, Formatting.Indented); 
+0

我有一個問題!日期格式是2014-01-11T00:00:00我需要它作爲這種格式1263297600000!任何想法如何我可以轉換它! – IamNumber5

+0

你可以試試這個:'JsonConvert.SerializeObject(Finaldata,new JsonConverter [] {new Newtonsoft.Json.Converters.JavaScriptDateTimeConverter()});' –

2

finallist.data應該是一個數組的數組:

var convertable = Finaldata.Select(f => new 
{ 
    f.name, 
    data = f.data.Select(d => new object[] { d.Date, d.value }) 
}); 

return JsonConvert.SerializeObject(convertable); 

結果將等同於您的JSON:

[{"name":"D1","data":[ 
    ["2014-01-01T00:00:01",2], 
    ["2014-01-01T00:00:05",1], ... 
相關問題