When I return object that contains DateTime property using
return Json(value);
on client I receive
"/Date(1336618438854)/"
If i return the same value using
return Json(JsonConvert.SerializeObject(value));
then the returned serialized value (together with serialized object) is time zone aware:
"/Date(1336618438854-0400)/"
Is there any way to get consistent DateTime result without without double serialization? I read somewhere that MS will include Newtonsoft JSON into MVC?
I finally figured out what to do.
I will switch my project to ISO 8601 DateTime format. Serialization is done nicely with JSON.net, just by decorating the datetime property on the object with JsonConverter attribute.
public class ComplexObject
{
[JsonProperty]
public string ModifiedBy { get; set; }
[JsonProperty]
[JsonConverter(typeof(IsoDateTimeConverter))]
public DateTime Modified { get; set; }
...
}
To return serialized object to the client ajax call I can do:
return Json(JsonConvert.SerializeObject(complexObjectInstance));
and on the client:
jsObject = JSON.parse(result)
Now I am thinking it would be probably simple to override default ASP.NET MVC default JSON serializer to us Newtonsoft JSON.net ISO 8601 serialization, and yes principle should be similar to this thread: Change Default JSON Serializer Used In ASP MVC3.
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