我目前正在使用以各种不同格式返回日期的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函数,如果没有不涉及我修改源的解决方案,我会这样做