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

时间:2014-12-22 11:23:41

标签: c# servicestack json-deserialization

我的客户希望接收并发送DateTime Objects我精彩的ServiceStack服务格式为' yyyyMMdd'

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

这是我的代码

        JsConfig<DateTime>.DeSerializeFn = dt =>
        {
            if (string.IsNullOrWhiteSpace(dt))
                return null;

            return DateTime.ParseExact(dt, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None);
        };

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

致以最诚挚的问候,以及快乐的圣日

1 个答案:

答案 0 :(得分:1)

刚刚添加了对压缩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 + 获得,现在为available on MyGet