寻求有关遍历JToken
对象并修改JArray
对象的每个实例的最有效方法的指南。
具体来说,我正在使用JsonDiffPatch.net库来计算两个模型之间的差异,然后仅通过HTTP将更改发送到Web客户端以修补本地状态模型。为了减少有效负载大小,我正在删除“左”数据(因为不需要撤消补丁)。
以下是我现在用来执行此操作的代码。
private static JToken CheckReplaceDiffArray(JToken obj)
{
Boolean hasChanged = false;
foreach (JToken content in obj.Values())
{
if (content.Type == JTokenType.Object)
{
JToken newContent = CheckReplaceDiffArray(content);
if (newContent != null)
{
content.Replace(newContent);
hasChanged = true;
}
}
if (content.Type == JTokenType.Array)
{
JToken newContent = ReplaceDiffArrayFirst(content as JArray);
if (newContent != null)
{
content.Replace(newContent);
hasChanged = true;
}
}
}
return hasChanged ? obj : null;
}
private static JArray ReplaceDiffArrayFirst(JArray obj)
{
if (obj.Count > 1)
{
obj[0] = "";
return obj;
}
return null;
}