diff --git a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs index 2920a097..f6991179 100644 --- a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs +++ b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs @@ -3353,5 +3353,24 @@ keyword such as type of business."" Assert.AreEqual(2, newDictionary.Count); } + + [Test] + public void SerializeNullableArray() + { + string jsonText = JsonConvert.SerializeObject(new double?[] { 2.4, 4.3, null }, Formatting.Indented); + + Assert.AreEqual(@"[ + 2.4, + 4.3, + null +]", jsonText); + + double?[] d = (double?[])JsonConvert.DeserializeObject(jsonText, typeof(double?[])); + + Assert.AreEqual(3, d.Length); + Assert.AreEqual(2.4, d[0]); + Assert.AreEqual(4.3, d[1]); + Assert.AreEqual(null, d[2]); + } } } \ No newline at end of file diff --git a/Src/Newtonsoft.Json/Serialization/JsonArrayContract.cs b/Src/Newtonsoft.Json/Serialization/JsonArrayContract.cs index e615edac..1c9849c7 100644 --- a/Src/Newtonsoft.Json/Serialization/JsonArrayContract.cs +++ b/Src/Newtonsoft.Json/Serialization/JsonArrayContract.cs @@ -70,7 +70,8 @@ namespace Newtonsoft.Json.Serialization internal IWrappedCollection CreateWrapper(object list) { - if (list is IList && (CollectionItemType == null || !_isCollectionItemTypeNullableType)) + if ((list is IList && (CollectionItemType == null || !_isCollectionItemTypeNullableType)) + || UnderlyingType.IsArray) return new CollectionWrapper((IList)list); if (_genericWrapperType == null)