在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 错误的情况下,服务应该继续下去,让服务自由选择或不注意缺失值;但我想知道是否有办法检测它们。
最好的问候,和快乐的圣日
刚刚添加了对压缩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 上使用。