如何在C#中测试一个Json是否“包含”另一个Json

sc4hvdpw  于 5个月前  发布在  C#
关注(0)|答案(1)|浏览(106)
    • 此问题在此处已有答案**:

How to compare two Json objects using C#(7个答案)
26天前关闭。
截至26天前,社区正在审查是否重新讨论这个问题。
假设我有两个json:

Json1
  {
    "a": 1,
    "b": {
      "b1": 21,
    }
  }

个字符
这里Json2 "包含" Json1,因为对于每个字段,我们都有相同的值(包括嵌套字段,如b.b1)。这里的用例是验证没有版本更改。
除了我自己实现逻辑之外,我该如何测试这个?

gkn4icbw

gkn4icbw1#

使用Newtonsoft.json,你可以这样做:

var reference = JObject.Parse("{\"a\": 1, \"b\": 2}");
var contained = JObject.Parse("{\"b\": 2}");
var notContained = JObject.Parse("{\"b\": 2, \"c\": 3}");

var mergedContained = (JObject)reference.DeepClone();
mergedContained.Merge(contained);
Debug.Assert(JToken.DeepEquals(mergedContained, reference));

var mergedNotContained = (JObject)reference.DeepClone();
mergedNotContained.Merge(notContained);
Debug.Assert(!JToken.DeepEquals(mergedNotContained, reference));

字符串
但是所有的克隆和合并看起来都有点愚蠢,我宁愿写一个递归算法来遍历JSON结构并将其与另一个结构进行比较。

相关问题