From 3327a6954cacca28ba206087a4425570b2d3345e Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Sun, 3 Aug 2014 18:56:41 +1200 Subject: [PATCH] -Merge demo --- Src/Newtonsoft.Json.Tests/DemoTests.cs | 35 +++++++++++++++++++ .../Newtonsoft.Json.Tests.csproj | 1 + .../Serialization/DependencyInjectionTests.cs | 1 + Src/Newtonsoft.Json/Linq/JContainer.cs | 4 ++- 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/Src/Newtonsoft.Json.Tests/DemoTests.cs b/Src/Newtonsoft.Json.Tests/DemoTests.cs index 95bd010f..b34c1173 100644 --- a/Src/Newtonsoft.Json.Tests/DemoTests.cs +++ b/Src/Newtonsoft.Json.Tests/DemoTests.cs @@ -29,6 +29,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using Newtonsoft.Json.Schema; using Newtonsoft.Json.Serialization; #if !NETFX_CORE @@ -515,5 +516,39 @@ namespace Newtonsoft.Json.Tests // "address": "221B Baker Street" // } } + + [Test] + public void MergeJson() + { + JObject o1 = JObject.Parse(@"{ + 'FirstName': 'John', + 'LastName': 'Smith', + 'Enabled': false, + 'Roles': [ 'User' ] + }"); + JObject o2 = JObject.Parse(@"{ + 'Enabled': true, + 'Roles': [ 'User', 'Admin' ] + }"); + + o1.Merge(o2, new JsonMergeSettings + { + // union arrays together to avoid duplicates + MergeArrayHandling = MergeArrayHandling.Union + }); + + string json = o1.ToString(); + // { + // "FirstName": "John", + // "LastName": "Smith", + // "Enabled": true, + // "Roles": [ + // "User", + // "Admin" + // ] + // } + + Console.WriteLine(json); + } } } \ No newline at end of file diff --git a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.csproj b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.csproj index 81ace437..b2b696df 100644 --- a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.csproj +++ b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.csproj @@ -492,6 +492,7 @@ + diff --git a/Src/Newtonsoft.Json.Tests/Serialization/DependencyInjectionTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/DependencyInjectionTests.cs index ff642609..4ee4171a 100644 --- a/Src/Newtonsoft.Json.Tests/Serialization/DependencyInjectionTests.cs +++ b/Src/Newtonsoft.Json.Tests/Serialization/DependencyInjectionTests.cs @@ -118,6 +118,7 @@ namespace Newtonsoft.Json.Tests.Serialization { JsonObjectContract contract = base.CreateObjectContract(objectType); + // use Autofac to create types that have been registered with it if (_container.IsRegistered(objectType)) contract.DefaultCreator = () => _container.Resolve(objectType); diff --git a/Src/Newtonsoft.Json/Linq/JContainer.cs b/Src/Newtonsoft.Json/Linq/JContainer.cs index 55287518..3d16778d 100644 --- a/Src/Newtonsoft.Json/Linq/JContainer.cs +++ b/Src/Newtonsoft.Json/Linq/JContainer.cs @@ -111,9 +111,11 @@ namespace Newtonsoft.Json.Linq { ValidationUtils.ArgumentNotNull(other, "c"); + int i = 0; foreach (JToken child in other) { - Add(child); + AddInternal(i, child, false); + i++; } }