我有两个json文件。无论元素的格式和顺序如何,它们都应该相同。
例如,这两个jsons是等价的,因为属性和数组是相同的,只有它们的顺序和格式类型不同:
{
"type" : "integer",
"values": [
{
"value": 1
},
{
"value": 2
}
]
}
和
{
"values": [
{ "value": 1 }, { "value": 2 }
],
"type" : "integer"
}
如果我将它们存储在两个单独的字符串中并进行比较,显然比较会说它们是不同的。相反,我想从语义的角度检查它们是否相等,它们是因为它们具有相同的属性,并且各自的数组是相同的。
如果我将它们存储在两个单独的字符串中,那么在C#中是否有办法检查这两个json是否相同?
答案 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)