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;
}
}
}