首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rest夏普DateTime反序列化

Rest夏普DateTime反序列化
EN

Stack Overflow用户
提问于 2015-11-03 01:46:38
回答 1查看 1.3K关注 0票数 0

我在使用Rest Sharp默认json反序列化时遇到了以下问题

我有以下User类

代码语言:javascript
运行
复制
public partial class User
 { 
  public long Id { get; set; }
  public string Name { get; set; }
  public DateTime? Date { get; set; }
 }

和下面的json消息:

代码语言:javascript
运行
复制
[
    {   "id":1,
        "name":"Adam",
        "date":"0000-00-00 00:00:00",
    }
]

默认情况下,Rest Sharp将此日期序列化为DateTime最小值{01/01/0001 00:00:00},但是在这种情况下,我如何覆盖此行为并获得null?

EN

回答 1

Stack Overflow用户

发布于 2015-11-05 00:14:59

看起来RestSharp's JSON serializer并没有像您期望的那样处理可以为空的日期。相关代码如下:

代码语言:javascript
运行
复制
if (type == typeof(DateTime) || (ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(DateTime)))
    return DateTime.ParseExact(str, Iso8601Format, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);

if (type == typeof(DateTimeOffset) || (ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(DateTimeOffset)))
    return DateTimeOffset.ParseExact(str, Iso8601Format, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);

这基本上是说,对于不可空和可空的date属性,都要解析为不可空的类型。

因此,您的选择是定制反序列化行为(信息here),或者使用支持可空日期的内容(如Json.NET )反序列化响应。另一种选择是使用我的Flurl库,这是RestSharp的一个替代方案,它在幕后使用Json.NET。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33483718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档