在JToken

时间:2018-02-24 23:03:37

标签: c# json json.net

寻求有关遍历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;
}

0 个答案:

没有答案