예제 #1
0
        /// <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);
        }
예제 #2
0
 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));
 }