1

我正在使用 JSON.Net 进行序列化。我需要我的数据看起来像这个 json 对象:

{
        name: "0.8C",
        data: [["10-10-2011", 10], ["10-11-2011", 20], ["10-12-2011", 25], ["10-13-2011", 40], ["10-14-2011", 50], ["10-15-2011", 60], ["10-16-2011", 70], ["10-17-2011", 80], ["10-18-2011", 100]]
}

所以我像这样建模我的对象:

public class ScatterLineChartSeriesModel
{                
    public IList<IDictionary<DateTime, double>> Data { get; set; }        
}

但是,这会像这样序列化 Data 属性:

[
        {
          "01/31/1966 00:00:00": 1008.795324292118,
          "02/28/1966 00:00:00": 992.18823885452684,
          "03/31/1966 00:00:00": 967.39109875352267,
          "04/30/1966 00:00:00": 985.79507840133135
        }
]

如何构造我的 C# 数据属性以直接序列化为所需的结构?

4

1 回答 1

4

它必须是这样的(添加Name属性,并使 IDictionary 成为 IList):

public class ScatterLineChartSeriesModel
{                
    public string Name { get; set; }
    public IList<IList<object>> Data { get; set; }        
}

您想要的输出 ["10-10-2011", 10] 是一个异构数组,因此源必须是对象列表。

另一种选择(对我来说似乎是一个更好的选择,如果实际上您的架构与您的示例所建议的一样固定)是将日期数字设置为属性:

data: [ { date: "10-10-2011", number: 10 }, { ... } ]

像这样:

public class SomeInnerClass
{
    public string Date { get; set; }
    public string Number { get; set; }
}

public class ScatterLineChartSeriesModel
{                
    public string Name { get; set; }
    public IList<IList<SomeInnerClass>> Data { get; set; }        
}
于 2012-06-13T18:48:30.287 回答