检查两个json是否相同

时间:2017-04-16 21:39:02

标签: c# json

我有两个json文件。无论元素的格式和顺序如何,它们都应该相同。

例如,这两个jsons是等价的,因为属性和数组是相同的,只有它们的顺序和格式类型不同:

{
  "type" : "integer",
  "values": [
    {
      "value": 1
    },
    {
      "value": 2
    }
  ]
}

{
  "values": [
    { "value": 1 }, { "value": 2 }
  ],
  "type" : "integer"
}

如果我将它们存储在两个单独的字符串中并进行比较,显然比较会说它们是不同的。相反,我想从语义的角度检查它们是否相等,它们是因为它们具有相同的属性,并且各自的数组是相同的。

如果我将它们存储在两个单独的字符串中,那么在C#中是否有办法检查这两个json是否相同?

2 个答案:

答案 0 :(得分:6)

使用Newtonsoft.Json nuget包的DeepEquals

using Newtonsoft.Json.Linq;

var jsonText1 = File.ReadAllText(fileName1);
var jsonText2 = File.ReadAllText(fileName2);

var json1 = JObject.Parse(jsonText1);
var json2 = JObject.Parse(jsonText2);

var areEqual = JToken.DeepEquals(json1, json2);

答案 1 :(得分:1)

最好的办法是使用" Newtonsoft.json"

参考以下帖子:

Find differences between two json objects