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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With