Fix error when deserializing empty array in DataTable (#1786)

This commit is contained in:
James Newton-King
2018-08-06 13:25:26 +12:00
committed by GitHub
parent 55f9ec3ab1
commit 092098933e
2 changed files with 18 additions and 0 deletions
@@ -50,6 +50,23 @@ namespace Newtonsoft.Json.Tests.Converters
{
public class DataTableConverterTests : TestFixtureBase
{
[Test]
public void DeserializeEmptyNestedArray()
{
var jsonString2 = @"[{""col1"": []}]";
DataTable dt = JsonConvert.DeserializeObject<DataTable>(jsonString2);
Assert.AreEqual(1, dt.Columns.Count);
Assert.AreEqual(typeof(string[]), dt.Columns["col1"].DataType);
Assert.AreEqual(1, dt.Rows.Count);
Assert.IsNotNull(dt.Rows[0]["col1"]);
object[] value = (object[])dt.Rows[0]["col1"];
Assert.AreEqual(0, value.Length);
}
#if !(NET20 || NET35)
[Test]
public void SerializeNullValues()
@@ -221,6 +221,7 @@ namespace Newtonsoft.Json.Converters
return reader.ValueType;
case JsonToken.Null:
case JsonToken.Undefined:
case JsonToken.EndArray:
return typeof(string);
case JsonToken.StartArray:
reader.ReadAndAssert();