【发布时间】:2020-12-11 00:42:40
【问题描述】:
我想获取在使用 Newtonsoft 进行比较时不匹配的 JSON 部分的列表。
我有这段代码可以比较:
JObject xpctJSON = JObject.Parse(expectedJSON);
JObject actJSON = JObject.Parse(actualJSON);
bool res = JToken.DeepEquals(xpctJSON, actJSON);
但是找不到任何返回差异的东西。
【问题讨论】:
-
这是一个很好的问题,很遗憾我没有一个很好的答案,但是这个问题和答案可能会对你有所帮助:stackoverflow.com/questions/630263/…
-
我认为您的需求并不容易得到答复。例如,
{a:{b:1,c:{d:3}}}和{a:{b:1,c:{d:4}}}之间的区别是什么,只有d?但是现在cs 有不同的值。所以它们也是不同的。如果cs 不同,那么as。与其这样,不如问问自己真正想做什么。 -
另外,属性的顺序在 JSON 中可能不同,但仍代表等效的对象,例如
{"a":"foo","b":"bar"}与{"b":"bar","a":"foo"}。您是否希望将其视为差异? -
我也有同样的需求,记录 JSON 数据包的差异。我在想我会将每个键:值对减少到一个哈希表中。关键将是在树上一直带点的名称
parent.child.property,这样每个都是唯一的,然后如果你对每个 json 图表都这样做,你就可以使用 Linq 快速比较并找到异常,并成为能够报告哪些是不同的。是不是想多了?