1

我想在比较原始 json 和实际 json 期间获得所有操作。JsonPatchDocument 的正常使用是对 expandoObject 应用操作以创建 json。我想要相反的,并且没有工具可以做到这一点。换句话说,我想使用将原始 json 转换为实际 json 的所有操作来构建 JsonPatchDocument。

我开始了一个算法,但它会很丑陋而且没有性能。

这部分算法将只生成 json 中的新属性,而不是更新和删除。

public static JsonPatchDocument GetAllOperations(string originalJson, string actualJson)
{
    JsonPatchDocument patch = new JsonPatchDocument();

    JObject originalObject = JsonConvert.DeserializeObject<JObject>(originalJson);
    JObject actualObject = JsonConvert.DeserializeObject<JObject>(actualJson);

    foreach (JProperty property in actualObject.Properties())
    {
        if (originalObject[property.Name] == null)
        {
            patch.Add(property.Path, property.Value);
        }
    }
    return patch;
}

您对这种算法或更简单的方法有什么建议吗?

4

0 回答 0