So, this was added to Json.net 5.0 Release 5
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Local
};
From the release notes:
Set once with
JsonConvert.DefaultSettings
in an application, the default settings will automatically be used by all calls toJsonConvert.SerializeObject
/DeserializeObject
, andJToken.ToObject
/FromObject
. Any user supplied settings to these calls will override the default settings.Because there are cases where JSON should not be customized, e.g. a Facebook or Twitter library, by default
JsonSerializer
won’t useDefaultSettings
, providing an opt-out for those frameworks or for places in your application that shouldn’t use default settings. To create aJsonSerializer
that does use them there is a newJsonSerializer.CreateDefault()
method.
Do note that when ASP.NET invokes Newtonsoft directly, e.g. in model binding or response formatting, it opts out of using these global default settings. To configure defaults used internally by ASP.NET see this answer by Andrei.