private static void PatchJObject()

in src/Common/Utilities/JsonUtilities.cs [169:202]


        private static void PatchJObject(JObject originalJsonObject, JObject patchJsonObject)
        {
            foreach (var patchProperty in patchJsonObject)
            {
                if (originalJsonObject[patchProperty.Key] != null)
                {
                    JToken originalJson = originalJsonObject[patchProperty.Key];
                    JToken patchJson = patchProperty.Value;

                    if (originalJson != null && originalJson.Type == JTokenType.Object &&
                        patchJson != null && patchJson.Type == JTokenType.Object)
                    {
                        PatchJObject(originalJson as JObject, patchJson as JObject);
                    }
                    else if (originalJson != null && originalJson.Type == JTokenType.Array &&
                        patchJson != null && patchJson.Type == JTokenType.Array)
                    {
                        originalJsonObject[patchProperty.Key] = patchJson;
                    }
                    else if (originalJson != null && patchJson != null && originalJson.Type == patchJson.Type)
                    {
                        originalJsonObject[patchProperty.Key] = patchJson;
                    }
                    else
                    {
                        throw new ArgumentException(string.Format(Resources.UnableToPatchJson, originalJson, patchJson));
                    }
                }
                else
                {
                    originalJsonObject[patchProperty.Key] = patchProperty.Value;
                }
            }
        }