/// <summary> /// Configures Json.NET with everything required to properly serialize and deserialize NodaTime data types. /// </summary> /// <param name="serializer">The existing serializer to add Noda Time converters to.</param> /// <param name="provider">The time zone provider to use when parsing time zones and zoned date/times.</param> /// <returns>The original <paramref name="serializer"/> value, for further chaining.</returns> public static JsonSerializer ConfigureForNodaTime(this JsonSerializer serializer, IDateTimeZoneProvider provider) { if (serializer == null) { throw new ArgumentNullException("serializer"); } if (provider == null) { throw new ArgumentNullException("provider"); } // Add our converters serializer.Converters.Add(NodaConverters.InstantConverter); serializer.Converters.Add(NodaConverters.IntervalConverter); serializer.Converters.Add(NodaConverters.LocalDateConverter); serializer.Converters.Add(NodaConverters.LocalDateTimeConverter); serializer.Converters.Add(NodaConverters.LocalTimeConverter); serializer.Converters.Add(NodaConverters.OffsetConverter); serializer.Converters.Add(NodaConverters.CreateDateTimeZoneConverter(provider)); serializer.Converters.Add(NodaConverters.DurationConverter); serializer.Converters.Add(NodaConverters.RoundtripPeriodConverter); serializer.Converters.Add(NodaConverters.OffsetDateTimeConverter); serializer.Converters.Add(NodaConverters.CreateZonedDateTimeConverter(provider)); // Disable automatic conversion of anything that looks like a date and time to BCL types. serializer.DateParseHandling = DateParseHandling.None; // return to allow fluent chaining if desired return(serializer); }
private static void AddDefaultConverters(IList <JsonConverter> converters, IDateTimeZoneProvider provider) { converters.Add(NodaConverters.InstantConverter); converters.Add(NodaConverters.IntervalConverter); converters.Add(NodaConverters.LocalDateConverter); converters.Add(NodaConverters.LocalDateTimeConverter); converters.Add(NodaConverters.LocalTimeConverter); converters.Add(NodaConverters.OffsetConverter); converters.Add(NodaConverters.CreateDateTimeZoneConverter(provider)); converters.Add(NodaConverters.DurationConverter); converters.Add(NodaConverters.RoundtripPeriodConverter); converters.Add(NodaConverters.OffsetDateTimeConverter); converters.Add(NodaConverters.CreateZonedDateTimeConverter(provider)); }