14

我刚刚安装了 ASP MVC 4,我的 JSON 日期仍然以旧格式返回{"timestamp":"\/Date(1348070400000)\/"}

的印象是他们应该在2012-02-18T00:54:06.8447642Z我不做任何事情的情况下以格式回归。

注意:JSON.NET 现在是 ASP.NET Web API 不可或缺的一部分,因此您可以直接使用它。

我的控制器看起来像这样

public JsonResult Test()
{
    return Json(new {timestamp = DateTime.Now()}, JsonRequestBehavior.AllowGet);
}

我怎样才能让它工作?我是否需要更改我的 Global.asax.cs 或 Web.config?

4

1 回答 1

22

我的印象是,他们应该以 2012-02-18T00:54:06.8447642Z 的格式返回,而无需我做任何事情。

这仅适用于 ASP.NET Web API (ApiControllers)。但是返回 JsonResults 的标准 ASP.NET MVC 控制器操作仍然使用JavaScriptSerializer. 因此,如果您想使用 ISO 8601 日期,您可以通过 JSON.NET 通过编写自定义操作结果来交换此序列化程序。只需将适当的转换器添加到序列化程序使用的设置中:

SerializerSettings.Converters.Add(new IsoDateTimeConverter());

您可能会问为什么他们没有为标准控制器实现 JSON.NET。我想这是出于兼容性原因,因为这将是一个重要的突破性变化。但我可能会让 JSON.NET 成为默认序列化程序,并为那些升级现有应用程序的人提供后备选项。

于 2012-09-20T06:08:33.080 回答