Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP MVC 4 JsonResult how to use ISO 8601 dates?

I have just installed ASP MVC 4 and my JSON dates are still coming back in the old format {"timestamp":"\/Date(1348070400000)\/"}.

I was under the impression that they should be coming back in the format 2012-02-18T00:54:06.8447642Z without me doing anything.

Note: JSON.NET is now an integral part of ASP.NET Web API so you can just us it out of the box.

My controller looks something like this

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

How can I get this to work? Do I need to make a change in my Global.asax.cs or Web.config?

like image 328
row1 Avatar asked Sep 20 '12 06:09

row1


1 Answers

I was under the impression that they should be coming back in the format 2012-02-18T00:54:06.8447642Z without me doing anything.

That's true only for ASP.NET Web API (ApiControllers). But standard ASP.NET MVC controller actions returning JsonResults still use the JavaScriptSerializer. So if you want to use ISO 8601 dates you could swap this serializer by JSON.NET by writing a custom action result. Just add the proper converter to the settings used by the serializer:

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

You might be asking why they didn't implement JSON.NET for standard controllers. I guess it's for compatibility reasons as that would be an important breaking change. But I would probably have made JSON.NET the default serializer with a fallback option for those upgrading their existing applications.

like image 191
Darin Dimitrov Avatar answered Nov 02 '22 09:11

Darin Dimitrov