ASP MVC 4 JsonResult, как использовать даты ISO 8601? - программирование
Подтвердить что ты не робот

ASP MVC 4 JsonResult, как использовать даты ISO 8601?

Я только что установил ASP MVC 4, и мои даты JSON все еще возвращаются в старом формате {"timestamp":"\/Date(1348070400000)\/"}.

Я был под показом, чтобы они возвращались в формате 2012-02-18T00:54:06.8447642Z без меня.

Примечание. JSON.NET теперь является неотъемлемой частью веб-API ASP.NET, поэтому вы можете просто мы это из коробки.

Мой контроллер выглядит примерно так:

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

Как я могу заставить это работать? Мне нужно внести изменения в свой файл Global.asax.cs или Web.config?

4b9b3361

Ответ 1

У меня сложилось впечатление, что они должны вернуться в формат 2012-02-18T00: 54: 06.8447642Z без меня ничего.

Это верно только для ASP.NET Web API (ApiControllers). Но стандартные действия контроллера ASP.NET MVC, возвращающие JsonResults, по-прежнему используют JavaScriptSerializer. Поэтому, если вы хотите использовать даты ISO 8601, вы можете поменять этот сериализатор на JSON.NET, написав пользовательский результат действия. Просто добавьте правильный конвертер в настройки, используемые сериализатором:

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

Возможно, вы спрашиваете, почему они не реализовали JSON.NET для стандартных контроллеров. Я предполагаю, что это связано с соображениями совместимости, поскольку это было бы важным изменением. Но я, вероятно, сделал бы JSON.NET стандартным сериализатором с резервным вариантом для тех, кто обновил свои существующие приложения.