【问题标题】:How to convert or write this Javascript array in C#如何在 C# 中转换或编写此 Javascript 数组
【发布时间】:2014-02-12 15:18:10
【问题描述】:

我想在 C# 中创建这个数组并通过 Json 将它发送到 javascript。 我怎么能用 C# 写这个?

这是 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');
                    }
                });
            });

【问题讨论】:

  • 您生成的 JSON 数组如何不正确?您可以添加您的代码生成的内容吗?
  • yes Json 数组不正确,我认为问题出在 c# 数组的结构上!我正在尝试构建图表这是我的 javascript 代码!

标签: c# javascript json list arraylist


【解决方案1】:

要获得您想要的 JSON 结构,您需要更改您的代码,以便 data 属性的每个元素都是一个对象数组:

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

【讨论】:

  • 我有一个问题!日期格式是 2014-01-11T00:00:00 我需要它是这种格式 1263297600000!知道如何转换它!
  • 你可以试试这个: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], ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 2022-09-29
    • 2013-07-27
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2011-05-03
    相关资源
    最近更新 更多