我想比较两个嵌套的 JSON 对象并获取主题之间的差异,例如添加/删除和更改值。
我使用了JsonDiffer,但是当我从数组的第一个或中间删除一个对象时,它检测到更改了所有对象。
请注意我的问题的简单示例:
原始JSON对象是:
{
"Array": [
{
"number": "111",
"Weight": 76
},
{
"number": "222",
"Weight": 77
},
{
"number": "333",
"Weight": 75
}
]
}
新的是:
{
"Array": [
{
"number": "222",
"Weight": 77
},
{
"number": "333",
"Weight": 75
}
]
}
在此示例中,JsonDiffer 返回数组中的所有对象都已更改!如果 应该返回,则仅删除 111 。
检查此代码:
模型类别:
public class MyModel
{
public string number { get; set; }
public int Weight { get; set; }
}
string json1 = "[{\"number\": \"111\",\"Weight\": 76 },{\"number\": \"222\",\"Weight\": 77},{\"number\": \"333\",\"Weight\": 75}]";
string json2 = "[{\"number\": \"222\",\"Weight\": 77 }, {\"number\": \"333\",\"Weight\": 75}]";
var Array_json1 = System.Text.Json.JsonSerializer.Deserialize<MyModel[]>(json1);
var Array_json2 = System.Text.Json.JsonSerializer.Deserialize<MyModel[]>(json2);
var Result = Array_json1.Where(x => !Array_json2.Any(y => x.number == y.number && x.Weight == y.Weight));