"[{"
id
":"
1
","
Name
":"
刘德华
","
age
":"
33
"},{"
id
":"
2
","
Name
":"
张学友
","
age
":"
55
"}]"
;
"[{"
id
":"
1
","
age
":"
33
","
Name
":"
刘德华
"},{"
id
":"
2
","
age
":"
55
","
Name
":"
张学友
"}]"
;
1、转为对象数组进行比较试一试
我们先转换成对数组对象比较试一试。这里使用的是
string json1 =
"[{\"
id\
":\"
1
\
",\"
Name\
":\"
刘德华\
",\"
age\
":\"
33
\
"},{\"
id\
":\"
2
\
",\"
Name\
":\"
张学友\
",\"
age\
":\"
55
\
"}]"
;
string json2 =
"[{\"
id\
":\"
1
\
",\"
age\
":\"
33
\
",\"
Name\
":\"
刘德华\
"},{\"
id\
":\"
2
\
",\"
age\
":\"
55
\
",\"
Name\
":\"
张学友\
"}]"
;
var jsondocument1 = JsonSerializer.Deserialize<List<object>>(json1);
var jsondocument2 = JsonSerializer.Deserialize<List<object>>(json2); var JsonDocumentd= jsondocument.Equals(jsondocument2) ;
var IsEqual= Equals(jsondocument1 ,jsondocument2) ;
Console.WriteLine(IsEqual);
Console.ReadLine;
//输出:false
这种方法不能比较,因为引用类型在内存是存储的引用地址,存储在堆上,所以对象的比较不能这么用,通常可以重写Equals方法,在里面具体判断两个对象的各属性是否相等,如果全相等返回true,只要有一项不相等则返回false,如果是数组就更加麻烦了。具体实例这里就不演示了。那么就没法好地比较了吗?有的,下面就介绍。
2、用Newtonsoft的特性比较
其实处理的Json的Newtonsoft包提供了比较方法。首先要在nuget引用Newtonsoft包。代码如下。
string json1 =
"[{\"
id\
":\"
1
\
",\"
Name\
":\"
刘德华\
",\"
age\
":\"
33
\
"},{\"
id\
":\"
2
\
",\"
Name\
":\"
张学友\
",\"
age\
":\"
55
\
"}]"
;
string json2 =
"[{\"
id\
":\"
1
\
",\"
age\
":\"
33
\
",\"
Name\
":\"
刘德华\
"},{\"
id\
":\"
2
\
",\"
age\
":\"
55
\
",\"
Name\
":\"
张学友\
"}]"
;
var rel1 = JArray.Parse(json1);
var rel2 = JArray.Parse(json2);
var rel3=JArray.DeepEquals(rel1 , rel2);
Console.WriteLine(rel3);
Console.ReadLine;
//输出:true
这里先把json字符串转成Array,然后用JArray.DeepEquals特性对比。输出true,完美解决。
本文讲述了用C#代码判断json数组是否相等的方法,使用对象的比较是行不通的,好在
Newtonsoft
提供了DeepEquals特性来比较。你有啥方法来比较吗?.NET Core的新特性System.Text.Json能比较吗?欢迎大家留言讨论或提出异议。
关注:
DotNet开发跳槽
觉得不错,请点个
在看
呀
返回搜狐,查看更多
责任编辑:
平台声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。