ASP.NET MVC Controller.Json DateTime序列化与NewtonSoft Json DateTime序列化

use*_*755 5 asp.net serialization datetime json asp.net-mvc-3

当我返回包含DateTime属性的对象时使用

return Json(value);
Run Code Online (Sandbox Code Playgroud)

我收到的客户

"/Date(1336618438854)/"
Run Code Online (Sandbox Code Playgroud)

如果我使用返回相同的值

return Json(JsonConvert.SerializeObject(value));
Run Code Online (Sandbox Code Playgroud)

然后返回的序列化值(与序列化对象一起)是时区感知的:

"/Date(1336618438854-0400)/"
Run Code Online (Sandbox Code Playgroud)

有没有办法在没有双序列化的情况下获得一致的DateTime结果?我在某处读过MS会将Newtonsoft JSON包含到MVC中吗?

use*_*755 8

我终于弄明白该怎么做了.
我将我的项目切换为ISO 8601 DateTime格式.只需使用JsonConverter属性修饰对象上的datetime属性,就可以很好地与JSON.net完成序列化.

    public class ComplexObject 
    {
        [JsonProperty]
        public string ModifiedBy { get; set; }
        [JsonProperty]
        [JsonConverter(typeof(IsoDateTimeConverter))]
        public DateTime Modified { get; set; }
        ...
     }
Run Code Online (Sandbox Code Playgroud)

要将序列化对象返回给客户端ajax调用,我可以这样做:

    return Json(JsonConvert.SerializeObject(complexObjectInstance));
Run Code Online (Sandbox Code Playgroud)

在客户端:

    jsObject = JSON.parse(result)
Run Code Online (Sandbox Code Playgroud)

现在,我想这将是可能简单覆盖默认的ASP.NET MVC默认JSON序列化给我们Newtonsoft JSON.net ISO 8601的序列,是的原则应该是类似这样的主题:更改默认JSON序列使用ASP MVC3.


alo*_*ida -2

如果您不想深入研究解析,只需将日期转换为字符串,而不是使用 JSON 解析它。

例如

return Json(DateTime.Now.ToString("your date format if you want to specify"));
Run Code Online (Sandbox Code Playgroud)