예제 #1
0
        public void DateSerializationWithNulls()
        {
            var serializeSettings = new JsonSerializerSettings();

            serializeSettings.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
            serializeSettings.Formatting            = Formatting.Indented;
            serializeSettings.DateFormatHandling    = DateFormatHandling.IsoDateFormat;
            serializeSettings.DateTimeZoneHandling  = DateTimeZoneHandling.Utc;
            serializeSettings.NullValueHandling     = NullValueHandling.Ignore;

            DateTestObject test = new DateTestObject();

            var expectedJson = @"{
  ""d"": ""0001-01-01"",
  ""dt"": ""0001-01-01T00:00:00Z"",
  ""dtoc"": ""0001-01-01"",
  ""dto"": ""0001-01-01T00:00:00+00:00""
}";
            var json         = JsonConvert.SerializeObject(test, serializeSettings);

            DateTestObject testRoundtrip = JsonConvert.DeserializeObject <DateTestObject>(json, serializeSettings);

            Assert.Equal(expectedJson, json);
            Assert.Null(testRoundtrip.DateNullable);
            Assert.Null(testRoundtrip.DateTimeNullable);
        }
예제 #2
0
        public void DateSerializationWithoutNulls()
        {
            var localDateTimeOffset = new DateTimeOffset(2015, 6, 1, 16, 10, 08, 121, new TimeSpan(-7, 0, 0));
            var utcDate             = DateTime.Parse("2015-06-01T00:00:00.0", CultureInfo.InvariantCulture);
            var serializeSettings   = new JsonSerializerSettings();

            serializeSettings.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
            serializeSettings.Formatting            = Formatting.Indented;
            serializeSettings.DateFormatHandling    = DateFormatHandling.IsoDateFormat;
            serializeSettings.DateTimeZoneHandling  = DateTimeZoneHandling.Utc;

            DateTestObject test = new DateTestObject();

            test.Date                                = localDateTimeOffset.LocalDateTime;
            test.DateNullable                        = localDateTimeOffset.LocalDateTime;
            test.DateTime                            = localDateTimeOffset.LocalDateTime;
            test.DateTimeNullable                    = localDateTimeOffset.LocalDateTime;
            test.DateTimeOffset                      = localDateTimeOffset;
            test.DateTimeOffsetNullable              = localDateTimeOffset;
            test.DateTimeOffsetWithConverter         = localDateTimeOffset;
            test.DateTimeOffsetNullableWithConverter = localDateTimeOffset;

            var expectedJson = @"{
  ""d"": ""2015-06-01"",
  ""dt"": ""2015-06-01T23:10:08.121Z"",
  ""dn"": ""2015-06-01T23:10:08.121Z"",
  ""dtn"": ""2015-06-01"",
  ""dtoc"": ""2015-06-01"",
  ""dtonc"": ""2015-06-01"",
  ""dto"": ""2015-06-01T16:10:08.121-07:00"",
  ""dton"": ""2015-06-01T16:10:08.121-07:00""
}";
            var json         = JsonConvert.SerializeObject(test, serializeSettings);

            DateTestObject testRoundtrip = JsonConvert.DeserializeObject <DateTestObject>(json, serializeSettings);

            Assert.Equal(expectedJson, json);
            Assert.Equal(utcDate, testRoundtrip.Date);
            Assert.Equal(localDateTimeOffset, testRoundtrip.DateTime.ToLocalTime());
            Assert.Equal(test.DateTimeOffset, testRoundtrip.DateTimeOffset);
        }
예제 #3
0
        public void DateSerializationWithMaxValue()
        {
            var localDateTime     = DateTime.Parse("9999-12-31T22:59:59-01:00", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal).ToLocalTime();
            var serializeSettings = new JsonSerializerSettings();

            serializeSettings.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
            serializeSettings.Formatting            = Formatting.Indented;
            serializeSettings.DateFormatHandling    = DateFormatHandling.IsoDateFormat;
            serializeSettings.DateTimeZoneHandling  = DateTimeZoneHandling.Utc;

            DateTestObject test = new DateTestObject();

            test.Date                   = localDateTime;
            test.DateNullable           = localDateTime;
            test.DateTime               = localDateTime;
            test.DateTimeNullable       = localDateTime;
            test.DateTimeOffsetNullable = localDateTime;
            test.DateTimeOffsetNullableWithConverter = localDateTime;
            test.DateTimeOffsetWithConverter         = localDateTime;

            var expectedJson = @"{
  ""d"": ""9999-12-31"",
  ""dt"": ""9999-12-31T23:59:59Z"",
  ""dn"": ""9999-12-31T23:59:59Z"",
  ""dtn"": ""9999-12-31"",
  ""dtoc"": ""9999-12-31"",
  ""dtonc"": ""9999-12-31"",
  ""dto"": ""0001-01-01T00:00:00+00:00"",
  ""dton"": """ + localDateTime.ToString("yyyy-MM-ddTHH:mm:sszzz") + @"""
}";
            var json         = JsonConvert.SerializeObject(test, serializeSettings);

            DateTestObject testRoundtrip = JsonConvert.DeserializeObject <DateTestObject>(json, serializeSettings);

            Assert.Equal(localDateTime, testRoundtrip.DateTime.ToLocalTime());
            Assert.Equal(expectedJson, json);
        }