Skip to content

Commit be744c4

Browse files
authored
Merge pull request #137 from kimsey0/CopyMaxDepth
Copy MaxDepth when creating internal JObjectReader
2 parents d87dec6 + 2fb1c60 commit be744c4

File tree

7 files changed

+47
-5
lines changed

7 files changed

+47
-5
lines changed

JsonSubTypes.Tests.Net35/App.config

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
55
<dependentAssembly>
66
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
7-
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
7+
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
88
</dependentAssembly>
99
</assemblyBinding>
1010
</runtime>

JsonSubTypes.Tests.Net35/JsonSubTypes.Tests.Net35.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<DefineConstants>TRACE;NET35</DefineConstants>
1616
</PropertyGroup>
1717
<ItemGroup>
18-
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
18+
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
1919
<PackageReference Include="NUnit" Version="3.13.2" />
2020
<PackageReference Include="TaskParallelLibrary" Version="1.0.2856.0" />
2121
</ItemGroup>

JsonSubTypes.Tests/App.config

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
55
<dependentAssembly>
66
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
7-
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
7+
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
88
</dependentAssembly>
99
</assemblyBinding>
1010
</runtime>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
using Newtonsoft.Json;
2+
using NUnit.Framework;
3+
4+
namespace JsonSubTypes.Tests
5+
{
6+
[TestFixture]
7+
public class DeeplyNestedDeserializationTests
8+
{
9+
[JsonConverter(typeof(JsonSubtypes), nameof(SubTypeClass.Discriminator))]
10+
[JsonSubtypes.KnownSubType(typeof(SubTypeClass), "SubTypeClass")]
11+
public abstract class MainClass
12+
{
13+
}
14+
15+
public class SubTypeClass : MainClass
16+
{
17+
public string Discriminator => "SubTypeClass";
18+
19+
public MainClass Child { get; set; }
20+
}
21+
22+
[Test]
23+
public void DeserializingDeeplyNestedJsonWithHighMaxDepthParsesCorrectly()
24+
{
25+
var root = new SubTypeClass();
26+
27+
var current = root;
28+
for (var i = 0; i < 64; i++)
29+
{
30+
var child = new SubTypeClass();
31+
current.Child = child;
32+
current = child;
33+
}
34+
35+
var json = JsonConvert.SerializeObject(root);
36+
37+
var obj = JsonConvert.DeserializeObject<MainClass>(json, new JsonSerializerSettings { MaxDepth = 65 });
38+
Assert.That(obj, Is.Not.Null);
39+
}
40+
}
41+
}

JsonSubTypes.Tests/JsonSubTypes.Tests.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
</PropertyGroup>
1717
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
1818
<ItemGroup>
19-
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
19+
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
2020
<PackageReference Include="NUnit" Version="3.13.2" />
2121
</ItemGroup>
2222
<ItemGroup>

JsonSubTypes/JsonSubtypes.cs

+1
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ private static JsonReader CreateAnotherReader(JToken jToken, JsonReader reader)
233233
jObjectReader.FloatParseHandling = reader.FloatParseHandling;
234234
jObjectReader.DateFormatString = reader.DateFormatString;
235235
jObjectReader.DateParseHandling = reader.DateParseHandling;
236+
jObjectReader.MaxDepth = reader.MaxDepth;
236237
return jObjectReader;
237238
}
238239

JsonSubTypes/packages.config

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net47" allowedVersions="[10.0.0, 13.0.0)" />
3+
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net47" allowedVersions="[10.0.0, 14.0.0)" />
44
</packages>

0 commit comments

Comments
 (0)