ServiceStack-如何反序列化DateTime,每个请求可以采用多种格式,而不会覆盖全局默认值

汤姆·麦克唐纳

我有一些全局默认值

JsConfig.DateHandler = DateHandler.ISO8601;
JsConfig.AlwaysUseUtc = true;
JsConfig.AssumeUtc = true;

我正在读取CsvFiles,其中的日期字段具有多种格式,并且全局默认值不支持。我已经通过以下代码解决了这个问题

var fn = JsConfig<DateTime?>.DeSerializeFn;
try
{
    using (var fs = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    {
        var formats = new[]
        {
            "dd/MM/yyyy HH:mm:ss tt", "yyyy-MM-dd HH:mm:ss"
        };

        JsConfig<DateTime?>.DeSerializeFn = str =>
        {
            if (str == null) return null;
            return DateTime.ParseExact(str, formats, CultureInfo.InvariantCulture, DateTimeStyles.None);
        };

        return CsvSerializer.DeserializeFromStream<List<T>>(fs);
    }
}
catch (Exception ex)
{
    throw new FileLoadException(ex.Message);
}
finally
{
    JsConfig<DateTime?>.DeSerializeFn = fn;
}

现在我遇到的问题是,当解析器在第2行中并且在最后一行之前时,这会中断其他地方的应用程序。这是因为我掌握了原始设置,将其更改为所需的设置,然后最后将其更改回原来的设置。JsConfig.With无法使用,因为它们不是DateTimeFormat数组属性,我还能做什么?我很沮丧!

神话

您不能“临时”更改任何类型的序列化实现,即此后注册的任何自定义实现必须保持不变。

您的自定义实现需要支持要使用的每种格式,更改为反序列化为,string以便您可以在反序列化原始字符串后将自己的自定义实现应用于原始字符串,或者您需要使用其他序列化程序来使用自定义实现。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ServiceStack DateTime反序列化问题

ServiceStack.Text版本5.4.0的默认char值序列化和反序列化

ServiceStack 5.1.0不会反序列化对象字段

ServiceStack Json反序列化错误

使用Servicestack从Soap反序列化布尔值

防止使用ServiceStack Json序列化默认值类型

ServiceStack Bug序列化GUID,数字等(默认值为value并指定了SerializeFn)

如何强制ServiceStack序列化对象

ServiceStack.Text序列化器作为默认序列化器/反序列化器

ServiceStack CsvSerializer日期格式

ServiceStack DateTime处理

反序列化ServiceStack.Text中的通用对象

使用ServiceStack反序列化字符串

ServiceStack Ormlite 为 In 子句反序列化数组

ServiceStack OrmLite:JSON fild 反序列化问题

无法反序列化请求时,ServiceStack返回自定义响应

防止ServiceStack序列化ENUM

ServiceStack异常序列化行为

反序列化可空布尔值时ServiceStack.Text奇怪的行为

如何在ServiceStack.Text中使用EnumMember属性反序列化可为空的枚举?

使用DataContract反序列化枚举时如何优化ServiceStack.Text性能

如何使用DataAnnotation将对象序列化为JSON以使用ServiceStack请求格式化Double属性

ServiceStack使用对象对字典进行序列化和反序列化

ServiceStack是否缓存内部请求?

ServiceStack解析Xml请求字典

ServiceStack:从URL解析请求DTO

ServiceStack DateTime本地而不是UTC

DateTime的ServiceStack ORMLite SqlList问题

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