我想在比较原始 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;
}
您对这种算法或更简单的方法有什么建议吗?