在Servicestack的JsConfig中反序列化时检测异常

本文关键字:检测 异常 反序列化 Servicestack JsConfig | 更新日期: 2023-09-27 18:35:08

我的客户希望接收并发送日期时间对象,我的出色ServiceStack服务格式为"yyyyMMdd"。

我想通知客户,每当格式不正确时。由于像ParseExact这样的框架函数抛出了FormatException,我想以某种方式捕获它们;

这是我的代码

        JsConfig<DateTime>.DeSerializeFn = dt =>
        {
            if (string.IsNullOrWhiteSpace(dt))
                return null;
            return DateTime.ParseExact(dt, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None);
        };

我认为,在出现 FormatException 错误的情况下,服务应该继续下去,让服务自由选择或不注意缺失值;但我想知道是否有办法检测它们。

最好的问候,和快乐的圣日

在Servicestack的JsConfig中反序列化时检测异常

刚刚添加了对压缩yyyyMMdd日期格式的支持,因此ServiceStack的Json Serializer现在可以处理像20001213这样的日期,例如:

var date = "20001213".FromJson<DateTime>(); // new DateTime(2000, 12, 13)

还有一个新DateTimeSerializer.OnParseErrorFn,您可以在其中处理无效的日期格式,例如:

DateTimeSerializer.OnParseErrorFn = (str, ex) =>
    DateTime.ParseExact(str, "yyMMdd", CultureInfo.InvariantCulture);
var date = "001213".FromJson<DateTime>();  // new DateTime(2000, 12, 13)

这两个更改都可以从 v4.0.35+ 中获得,现在可在 MyGet 上使用。