From 0f148a97888479f0931a46a8be9ce77df565a9b8 Mon Sep 17 00:00:00 2001 From: JamesNK Date: Sat, 27 Mar 2010 07:17:11 +0000 Subject: [PATCH] -Fix deserializing nullable array --- .../Serialization/JsonSerializerTest.cs | 19 +++++++++++++++++++ .../Serialization/JsonArrayContract.cs | 3 ++- 2 files changed, 21 insertions(+), 1 deletion(-) 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)