C# 从原始JSon和实际JSon获取JsonPatchDocument操作
我希望在比较原始json和实际json时获得所有操作。 JsonPatchDocument的正常用途是对ExpandooObject应用操作来创建json。 我想要的是相反的,没有工具。 换句话说,我想用将原始json转换为实际json的所有操作构建JsonPatchDocument 我开始一个算法,但它将是丑陋的,没有表现 这段algo将只在json中生成新属性,而不是更新和删除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
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);
}
}
返回补丁;
}
对于这种算法,你有什么建议吗?或者更简单的方法