2

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

4

0 回答 0