C# 从原始JSon和实际JSon获取JsonPatchDocument操作

C# 从原始JSon和实际JSon获取JsonPatchDocument操作,c#,json.net,json-patch,C#,Json.net,Json Patch,我希望在比较原始json和实际json时获得所有操作。 JsonPatchDocument的正常用途是对ExpandooObject应用操作来创建json。 我想要的是相反的,没有工具。 换句话说,我想用将原始json转换为实际json的所有操作构建JsonPatchDocument 我开始一个算法,但它将是丑陋的,没有表现 这段algo将只在json中生成新属性,而不是更新和删除 public static JsonPatchDocument GetAllOperations(string o

我希望在比较原始json和实际json时获得所有操作。 JsonPatchDocument的正常用途是对ExpandooObject应用操作来创建json。 我想要的是相反的,没有工具。 换句话说,我想用将原始json转换为实际json的所有操作构建JsonPatchDocument

我开始一个算法,但它将是丑陋的,没有表现

这段algo将只在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;
}
publicstaticjsonpatchdocumentgetalloperations(stringoriginaljson,stringactualjson)
{
JsonPatchDocument patch=新的JsonPatchDocument();
JObject originalObject=JsonConvert.DeserializeObject(originalJson);
JObject actualObject=JsonConvert.DeserializeObject(actualJson);
foreach(actualObject.Properties()中的JPProperty属性)
{
if(originalObject[property.Name]==null)
{
Add(property.Path,property.Value);
}
}
返回补丁;
}
对于这种算法,你有什么建议吗?或者更简单的方法