如何在 C# 中获取两个嵌套 JSON 对象之间的差异

问题描述 投票:0回答:1

我想比较两个嵌套的 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

c# json .net
1个回答
0
投票

检查此代码:

模型类别:

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));
© www.soinside.com 2019 - 2024. All rights reserved.