在JSON.net中反序列化任意日期格式

时间:2013-10-09 02:30:16

标签: c# json.net

我目前正在使用以各种不同格式返回日期的API(理想情况下,它们会标准化它们的格式),所以我在每个属性上放置了JsonConvertAttribute属性,以便正确地反序列化它们:

[JsonConverter(typeof(dMMyyyyWithSlashesConverter))]
public DateTime SomeDate { get; set; }

[JsonConverter(typeof(MMyyyyWithSlashesConverter))]
public DateTime AnotherDate { get; set; }

[JsonConverter(typeof(yyyyMMWithoutSlashesConverter))]
public DateTime AnnoyingDate { get; set; }

因此,对于每种日期格式,我都必须创建一个新的转换器类,例如

public class MMyyyyWithSlashesConverter: CustomDateConverter
{
    public MMyyyyWithSlashesConverter() : base("MM/yyyy")
    {
    }
}

这使得一些非常丑陋和重复的代码。我宁愿做一些像

这样的事情
[ParseDateAs("d/MM/yyyy")]
public DateTime SomeDate { get; set; }

[ParseDateAs("MM/yyyy")]
public DateTime AnotherDate { get; set; }

[ParseDateAs("yyyyMM")]
public DateTime LessAnnoyingDate{ get; set; }

我能想到的唯一方法是修改JSON.net源以将属性参数传递给JsonConverter上的ReadJson函数,如果没有不涉及我修改源的解决方案,我会这样做

0 个答案:

没有答案