C# 如何获得两个JSON';C中的s#

C# 如何获得两个JSON';C中的s#,c#,json,compare,element,difference,C#,Json,Compare,Element,Difference,今天我想问一下如何比较两个不同的JSON,假设第一个JSON有7个元素,而第二个JSON有9个元素 我如何让我的程序确定哪两个元素是新元素 这是我尝试过的代码,但效果不太好 bool check = false; foreach (var item in jsonTwo["contentItems"]) { foreach (var ite

今天我想问一下如何比较两个不同的JSON,假设第一个JSON有7个元素,而第二个JSON有9个元素

我如何让我的程序确定哪两个元素是新元素

这是我尝试过的代码,但效果不太好

                bool check = false;

                foreach (var item in jsonTwo["contentItems"])
                {
                    foreach (var item2 in jsonOne["contentItems"])
                    {
                        if (item["contentFields"]["title"].ToString() == item2["contentFields"]["title"].ToString())
                        {
                            check = true;
                        }
                        else
                        { check = false; }
                    }

                    if (check == false)
                    {
                        Console.WriteLine(item["contentFields"]["title"].ToString());
                    }
                }
感谢大家的帮助

这个怎么样

    public class User
    {
        public string Name { get; set; }
        public string City { get; set; }
        public int Age { get; set; }

        public override string ToString()
        {
            return $"{Name}-{City}-{Age}"; 
        }
    }

    public class UserEqualityComparer : IEqualityComparer<User>
    {
        public bool Equals(User x, User y)
        {
            return x.Age == y.Age && x.City == y.City;
        }

        public int GetHashCode(User obj)
        {
            return 0;
        }
    }

    static void Main(string[] args)
    {
        var jsonArray = new List<string>()
        {
            @"{name: ""John"", age: 31, city: ""New York""}",
            @"{name: ""John2"", age: 31, city: ""New York""}",
            @"{name: ""John3"", age: 33, city: ""New York""}",
        };

        var users = jsonArray.Select(m => JsonConvert.DeserializeObject<User>(m)).ToList();

        var groups = users.GroupBy(m => m, new UserEqualityComparer()).ToList();


        foreach (var group in groups)
        {
            foreach (var item in group)
            {
                Console.WriteLine(item.ToString());
            }
            Console.WriteLine("------------");
        }
        Console.ReadLine();
    }
公共类用户
{
公共字符串名称{get;set;}
公共字符串City{get;set;}
公共整数{get;set;}
公共重写字符串ToString()
{
返回$“{Name}-{City}-{Age}”;
}
}
公共类UserEqualityComparer:IEqualityComparer
{
公共布尔等于(用户x、用户y)
{
返回x.Age==y.Age&&x.City==y.City;
}
public int GetHashCode(用户obj)
{
返回0;
}
}
静态void Main(字符串[]参数)
{
var jsonArray=新列表()
{
@{姓名:“约翰”,年龄:31岁,城市:“纽约”},
@{姓名:“约翰2”,年龄:31岁,城市:“纽约”},
@{姓名:“约翰3”,年龄:33岁,城市:“纽约”},
};
var users=jsonArray.Select(m=>JsonConvert.DeserializeObject(m)).ToList();
var groups=users.GroupBy(m=>m,newuserequalitycomparer()).ToList();
foreach(组中的var组)
{
foreach(组中的var项目)
{
Console.WriteLine(item.ToString());
}
Console.WriteLine(“-------------”);
}
Console.ReadLine();
}

您可以使用
JsonDiffer
:包在json对象之间进行比较。用法如下->var j1=JToken.Parse(读取(jsonOne));var j2=JToken.Parse(读取(jsonTwo));var diff=JsonDifferentiator.Differention(j1,j2);感谢@AmirhosseinAzhdari包,这很好,但问题是,如果数组中的两个不同索引中有两个不同的元素,它会将这些元素之间的所有内容检测为差异,即使它们不是差异。是的,它只在三种模式下比较json对象,‍<代码>不存在,
它具有不同的值
,‍‍‍‍‍‍‍‍‍<代码>是额外的‍。请尝试此软件包,它比以前的软件包具有更多功能,
https://github.com/wbish/jsondiffpatch.net
:我认为这不是检测具有不同索引的数组值之间的差异。