C# 如何获得两个JSON';C中的s#
今天我想问一下如何比较两个不同的JSON,假设第一个JSON有7个元素,而第二个JSON有9个元素 我如何让我的程序确定哪两个元素是新元素 这是我尝试过的代码,但效果不太好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
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
:我认为这不是检测具有不同索引的数组值之间的差异。