JSON date to Model C# DateTime

本文关键字:DateTime Model to date JSON | 更新日期: 2023-09-27 18:05:10

我有一个ASP。. NET MVC API站点,其中一个模型需要DateTime,但无论我做什么,它都不会接受我将其作为有效模型发送的数据!

I have tried

{"Owner":"s083151","Permissions":"public","Name":"SomeRandomMeeting","Begin":"2013-03-28T13:00:00.2124557+01:00","End":"2013-03-28T17:00:00.2124557+01:00","Url":"MyRandomUrl"}

{"Owner":"s083151","Permissions":"public","Name":"SomeRandomMeeting","Begin":Date(1364234400),"End":Date(1364248800),"Url":"MyRandomUrl"}

{"Owner":"s083151","Permissions":"public","Name":"SomeRandomMeeting","Begin":1364234400,"End":1364248800,"Url":"MyRandomUrl"}

{"Owner":"s083151","Permissions":"public","Name":"SomeRandomMeeting","Begin":"1364234400","End":"1364248800","Url":"MyRandomUrl"}

但没有一个被接受为模型。是有效的,我做错了什么?

我使用fiddler来测试请求这是我的请求头

User-Agent: Fiddler
Content-Type: application/json

数据模型

[DataContract]
public class MeetingModel
{
    [Required]
    [StringLength(500)]
    public string Owner { get; set; }
    [Required]
    public string Permissions { get; set; }
    [Required]
    [StringLength(500)]
    public string Name { get; set; }
    [Required]
    public DateTime Begin { get; set; }
    [Required]
    public DateTime End { get; set; }
    [Required]
    [StringLength(75)]
    public string Url { get; set; }
    public string MeetingId { get; set; }
    public TimeSpan Duration { get; set; }
    public List<UserModel> Hosts { get; set; }
    public List<UserModel> Participants { get; set; }
}

JSON date to Model C# DateTime

像这样把日期字段放在斜杠之间,对我来说很有效:

{"Owner":"s083151",
 "Permissions":"public",
 "Name":"SomeRandomMeeting",
 "Begin":"/Date(1364234400)/",
 "End":"/Date(1364248800)/",
 "Url":"MyRandomUrl"}

如果你用c#代码生成JSON,要小心添加scape反斜杠:

"'/Date(1364234400)'/"

根据http://james.newtonking.com/projects/json/help/index.html?topic=html/DatesInJSON.htm, JSON标准为"2012-03-19T07:22Z"。你能试试吗?

编辑:刚刚在我的一些代码上尝试了GET,我得到了"OrderTime":"2013-03-21T12:58:15.053"

似乎不是因为日期,而是因为打字错误:您在类中具有Permissions(复数)属性,但在JSON中具有Permission(单数)。

至于日期格式,Scott Hanselman有一篇关于日期格式的文章,从这篇文章来看,默认JSON模型绑定器将理解的格式看起来像"2013-03-21T00:00:00"(并且似乎是ISO 8601标准的一部分)。