如何将 Json 序列化程序配置为在 Web API 中为输入和输出参数提供单独的日期转换器



我正在研究 web api,我需要使 Json 序列化程序仅将日期输入参数转换为 UTC 格式。

现在我正在使用此代码进行转换:

 IsoDateTimeConverter converter = new IsoDateTimeConverter
        {
            DateTimeStyles = DateTimeStyles.AdjustToUniversal,
        };
 config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(converter);

上述配置将在输入和输出日期参数上实现。

如何将我的 Web api 配置为具有两个日期转换器,一个用于输入参数,另一个用于输出参数?

附注:

我想将日期输入参数转换为 utc,但要将输出参数转换为 ISO 8601

我想到的最简单的解决方案是创建自定义 DateTime 转换器,该转换器继承自 IsoDateTimeConverter 并覆盖CanWrite属性,以便它始终返回 false 。在这种情况下,转换器将仅用于反序列化输入,而永远不会用于序列化输出:

public class InputUniversalConverter : IsoDateTimeConverter
{
    public override bool CanWrite => false;
    public InputUniversalConverter()
    {
        DateTimeStyles = DateTimeStyles.AdjustToUniversal;
    }
}
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new InputUniversalConverter());

最新更新