diff --git a/Src/Newtonsoft.Json.TestConsole/Properties/AssemblyInfo.cs b/Src/Newtonsoft.Json.TestConsole/Properties/AssemblyInfo.cs index 0a3a712e..0b37d9bb 100644 --- a/Src/Newtonsoft.Json.TestConsole/Properties/AssemblyInfo.cs +++ b/Src/Newtonsoft.Json.TestConsole/Properties/AssemblyInfo.cs @@ -57,4 +57,4 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: [assembly: AssemblyVersion("7.0.0.0")] -[assembly: AssemblyFileVersion("7.0.1.18322")] +[assembly: AssemblyFileVersion("7.0.1.18329")] diff --git a/Src/Newtonsoft.Json.Tests/Converters/DataTableConverterTests.cs b/Src/Newtonsoft.Json.Tests/Converters/DataTableConverterTests.cs index 92b28cac..4f1b25ce 100644 --- a/Src/Newtonsoft.Json.Tests/Converters/DataTableConverterTests.cs +++ b/Src/Newtonsoft.Json.Tests/Converters/DataTableConverterTests.cs @@ -455,10 +455,11 @@ namespace Newtonsoft.Json.Tests.Converters Assert.AreEqual("432", dt[0].CustomerID); } - [Test] - public void DeserializedTypedDataTableWithConverter() - { - string json = @"{ +#if !(NET20 || PORTABLE || PORTABLE40) + [Test] + public void DeserializedTypedDataTableWithConverter() + { + string json = @"{ ""TestTable"": [ { ""DateTimeValue"": ""2015-11-28T00:00:00"" @@ -469,36 +470,41 @@ namespace Newtonsoft.Json.Tests.Converters ] }"; - var ds = JsonConvert.DeserializeObject(json, new SqlDateTimeConverter()); + SqlTypesDataSet ds = JsonConvert.DeserializeObject(json, new SqlDateTimeConverter()); - Assert.AreEqual(new System.Data.SqlTypes.SqlDateTime(2015, 11, 28), ds.TestTable[0].DateTimeValue); - Assert.AreEqual(System.Data.SqlTypes.SqlDateTime.Null, ds.TestTable[1].DateTimeValue); - } + Assert.AreEqual(new System.Data.SqlTypes.SqlDateTime(2015, 11, 28), ds.TestTable[0].DateTimeValue); + Assert.AreEqual(System.Data.SqlTypes.SqlDateTime.Null, ds.TestTable[1].DateTimeValue); + + string json2 = JsonConvert.SerializeObject(ds, Formatting.Indented, new SqlDateTimeConverter()); - internal class SqlDateTimeConverter : JsonConverter - { - public override bool CanConvert(Type objectType) - { - return typeof(System.Data.SqlTypes.SqlDateTime).IsAssignableFrom(objectType); - } + Assert.AreEqual(json, json2); + Console.WriteLine(json2); + } - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - if (reader.Value == null || reader.Value == DBNull.Value) - return System.Data.SqlTypes.SqlDateTime.Null; - else - return new System.Data.SqlTypes.SqlDateTime((DateTime)serializer.Deserialize(reader)); - } + internal class SqlDateTimeConverter : JsonConverter + { + public override bool CanConvert(Type objectType) + { + return typeof(System.Data.SqlTypes.SqlDateTime).IsAssignableFrom(objectType); + } - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - if (((System.Data.SqlTypes.SqlDateTime)value).IsNull) - writer.WriteNull(); - else - writer.WriteValue(((System.Data.SqlTypes.SqlDateTime)value).Value); - } - } - } + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if (reader.Value == null || reader.Value == DBNull.Value) + return System.Data.SqlTypes.SqlDateTime.Null; + else + return new System.Data.SqlTypes.SqlDateTime((DateTime)serializer.Deserialize(reader)); + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + if (((System.Data.SqlTypes.SqlDateTime)value).IsNull) + writer.WriteNull(); + else + writer.WriteValue(((System.Data.SqlTypes.SqlDateTime)value).Value); + } + } +#endif + } } - #endif \ No newline at end of file diff --git a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Net35.csproj b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Net35.csproj index b7245ea4..c98b0ac6 100644 --- a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Net35.csproj +++ b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Net35.csproj @@ -79,6 +79,7 @@ 3.5 + 3.5 @@ -241,6 +242,11 @@ + + True + True + SqlTypesDataSet.xsd + @@ -355,6 +361,17 @@ PreserveNewest + + SqlTypesDataSet.xsd + + + MSDataSetGenerator + SqlTypesDataSet.Designer.cs + Designer + + + SqlTypesDataSet.xsd + diff --git a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Net40.csproj b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Net40.csproj index bb0ce427..b226d3e1 100644 --- a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Net40.csproj +++ b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Net40.csproj @@ -85,6 +85,7 @@ 3.5 + 3.5 @@ -363,6 +364,11 @@ + + True + True + SqlTypesDataSet.xsd + @@ -540,6 +546,17 @@ PreserveNewest + + SqlTypesDataSet.xsd + + + MSDataSetGenerator + SqlTypesDataSet.Designer.cs + Designer + + + SqlTypesDataSet.xsd + diff --git a/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs b/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs index 854d9f99..34825fb8 100644 --- a/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs +++ b/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs @@ -76,4 +76,4 @@ using System.Security; // by using the '*' as shown below: [assembly: AssemblyVersion("7.0.0.0")] -[assembly: AssemblyFileVersion("7.0.1.18322")] +[assembly: AssemblyFileVersion("7.0.1.18329")] diff --git a/Src/Newtonsoft.Json/Converters/DataTableConverter.cs b/Src/Newtonsoft.Json/Converters/DataTableConverter.cs index e9c36afa..172396cd 100644 --- a/Src/Newtonsoft.Json/Converters/DataTableConverter.cs +++ b/Src/Newtonsoft.Json/Converters/DataTableConverter.cs @@ -56,11 +56,13 @@ namespace Newtonsoft.Json.Converters writer.WriteStartObject(); foreach (DataColumn column in row.Table.Columns) { - if (serializer.NullValueHandling == NullValueHandling.Ignore && (row[column] == null || row[column] == DBNull.Value)) + object columnValue = row[column]; + + if (serializer.NullValueHandling == NullValueHandling.Ignore && (columnValue == null || columnValue == DBNull.Value)) continue; writer.WritePropertyName((resolver != null) ? resolver.GetResolvedPropertyName(column.ColumnName) : column.ColumnName); - serializer.Serialize(writer, row[column]); + serializer.Serialize(writer, columnValue); } writer.WriteEndObject(); } @@ -165,7 +167,7 @@ namespace Newtonsoft.Json.Converters } else { - dr[columnName] = reader.Value != null ? serializer.Deserialize(reader, column.DataType) : DBNull.Value; + dr[columnName] = (reader.Value != null) ? serializer.Deserialize(reader, column.DataType) : DBNull.Value; } CheckedRead(reader); @@ -222,5 +224,4 @@ namespace Newtonsoft.Json.Converters } } } - #endif \ No newline at end of file diff --git a/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs b/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs index 2c5269be..183100aa 100644 --- a/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs +++ b/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs @@ -92,5 +92,5 @@ using System.Security; // by using the '*' as shown below: [assembly: AssemblyVersion("7.0.0.0")] -[assembly: AssemblyFileVersion("7.0.1.18322")] +[assembly: AssemblyFileVersion("7.0.1.18329")] [assembly: CLSCompliant(true)]