2014-01-22 21 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], ... 
相关问题