in CosmosClone/CosmosCloneCommon/Utility/ObjectScrubber.cs [208:275]
public JToken GetUpdatedJsonArrayValue(JToken token, List<string> propNames, string overwritevalue, RuleType? ruleType)
{
if (token == null || token.Type == JTokenType.Null) return null;
JToken jTokenResult=token;//just to initialize
bool isLeaflevel = false;
if (propNames.Count > 1)
{
if (propNames.Count == 2) isLeaflevel = true;
var currentProperty = propNames[1];
if (token.Type == JTokenType.Array)
{
var jArray = (JArray)token;
for (int k = 0; k < jArray.Count; k++)
{
if (isLeaflevel == true)
{
if (jArray[k][currentProperty] != null && jArray[k][currentProperty].Type != JTokenType.Null)
{
jArray[k][currentProperty] = ScrubTokenValue(ruleType, jArray[k][currentProperty], overwritevalue);
}
continue;
}
else
{
if (jArray[k] != null && jArray[k][currentProperty].Type != JTokenType.Null)
{
jArray[k] = GetUpdatedJsonArrayValue(jArray[k], propNames.GetRange(1, propNames.Count - 1), overwritevalue, ruleType);
continue;
}
//else return null;
}
}
var str2 = jArray.ToString();
jTokenResult = (JToken)jArray;
}
else
{
var jObj = (JObject)token;
if (isLeaflevel == true)
{
if (jObj[currentProperty] != null && jObj[currentProperty].Type != JTokenType.Null)
{
jObj[currentProperty] = ScrubTokenValue(ruleType, jObj[currentProperty], overwritevalue);
}
}
else
{
if (jObj[currentProperty] != null && jObj[currentProperty].Type != JTokenType.Null)
{
jObj[currentProperty] = GetUpdatedJsonArrayValue((JToken)jObj[currentProperty], propNames.GetRange(1, propNames.Count - 1), overwritevalue, ruleType);
}
//else return null;
}
var str3 = jObj.ToString();
jTokenResult = (JToken)jObj;
}
}
if(jTokenResult == null)
{
jTokenResult = token;
}
return jTokenResult;
}