在C#-Restsharp中序列化日期-时间字段时,模型始终为null

本文关键字:模型 null 字段 C#-Restsharp 序列化 日期 时间 | 更新日期: 2023-09-27 18:24:08

我在C#中遇到了一个简单序列化和反序列化的问题。

我正在使用RestSharp来调用一个webapi方法(REST方法)。

型号为:

public class MyModel
{
  public DateTime date {get;set;}
}

控制器方法:

[RoutePrefix("Test")]
public class ValuesController : ApiController
{
    [Route("~/Date")]
    [HttpPost]
    public IHttpActionResult Post([FromBody] MyModel model)
    {
        if (model == null)
          return NotOk();
        return Ok();
    }
}

但是不幸的是,当使用xml时,model总是空的。

Restsharp客户端:

var restRequest = new RestRequest(@"http://localhost:50099/Date", Method.POST)
{
      RequestFormat = DataFormat.Xml,
};
restRequest.AddBody(new MyModel(), "");

---->当数据格式为xml时,模型为空。

Restsharp客户端:

var restRequest = new RestRequest(@"http://localhost:50099/Date", Method.POST)
{
      RequestFormat = DataFormat.Json,
};
restRequest.AddBody(new MyModel(), "");

----->当数据格式为json时,模型不为null。date属性为默认值。

在C#-Restsharp中序列化日期-时间字段时,模型始终为null

此处回答。

简而言之,在初始化Json serializer时,我将DataContractSerializer设置为true。此DataContractSerializer预期日期为epoch格式,因此出现问题。