ASP.NET MVC Controller.Json DateTime Serialization vs NewtonSoft Json DateTime Serialization

22,918

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.

Share:
22,918
user1188755
Author by

user1188755

Updated on July 09, 2022

Comments

  • user1188755
    user1188755 almost 2 years

    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?

  • user1188755
    user1188755 almost 12 years
    Sorry, but this post is not about showing dates. It is about consistency in serialized date format for complex objects containing DateTime properties in server to client and client to server scenarios. And what you are suggesting I am doing in the 2nd line with SerializeObject for the whole object.
  • alok_dida
    alok_dida almost 12 years
    @user1188755 ... check below this stackoverflow.com/questions/668488/…
  • Pete
    Pete over 9 years
    Great answer but I found that the Newtonsoft.Json attributes are not necessary. Simply using $.parseJSON(result) will properly parse the dates. stackoverflow.com/a/4540007/752974