ADCImportExport.Program.RemoveSystemProperties C# (CSharp) Method

RemoveSystemProperties() private static method

private static RemoveSystemProperties ( Newtonsoft.Json.Linq.JObject payload, bool isRoot = true ) : void
payload Newtonsoft.Json.Linq.JObject
isRoot bool
return void
        private static void RemoveSystemProperties(JObject payload, bool isRoot = true)
        {
            foreach (var propertyName in ((IDictionary<string, JToken>)payload).Keys.ToArray()
                .Where(k => k != "properties" && k != "annotations" && !(k == "id" && isRoot)))
            {
                payload.Remove(propertyName);
            }

            JToken annotationsJToken;
            if (payload.TryGetValue("annotations", out annotationsJToken) && annotationsJToken.Type == JTokenType.Object)
            {
                var annotationsJObject = (JObject)annotationsJToken;
                foreach (var jProperty in annotationsJObject.Properties())
                {
                    if (jProperty.Value.Type == JTokenType.Object)
                    {
                        var nextPayload = (JObject)jProperty.Value;
                        RemoveSystemProperties(nextPayload, false);
                        annotationsJObject[jProperty.Name] = nextPayload;
                    }
                    else if (jProperty.Value.Type == JTokenType.Array)
                    {
                        foreach (var jItem in ((JArray)jProperty.Value).Where(i => i.Type == JTokenType.Object))
                        {
                            RemoveSystemProperties((JObject)jItem, false);
                        }

                        annotationsJObject[jProperty.Name] = jProperty.Value;
                    }
                }
            }
        }