例如:
Json A =>
{
"customer": {
"age": 29,
"fullName": "Emily Jenkins",
"year":1988,
"address":{
"lineOne":"lineOne",
"lineTwo":"lineTwo"
}
},
"handset":{
"phone":"0123456789",
"colour":"black"
}
}
Json B =>
{
"customer": {
"fullName": "Sammy J",
"age": 31,
"year":1985,
"address":{
"lineTwo":"lineTwo",
"lineOne":"lineOne"
}
},
"handset":{
"colour":"red",
"phone":"0123456788"
}
}
我想比较这两个json,它应该返回true,因为键是匹配的,两个json结构是相同的。那么有没有一个干净的方法来做呢?
我知道使用Gson库我可以比较两个JsonElement,但这也会匹配我不想作为用例约束保留的值。
JsonParser parser = new JsonParser();
JsonElement p1 = parser.parse(JsonA);
JsonElement p2 = parser.parse(JsonB);
System.out.printf(p1.equals(p2) ? "Equal" : "Not Equal"); //it returns true if values are same.
1条答案
按热度按时间ngynwnxp1#
这确实是JSON模式验证的一个案例,请参阅核心和验证。
有几个JSON模式验证器可用,在下面的例子中,我使用enter link description here。库的二进制文件在Maven中可用,它也可以下载(沿着所有依赖项和javadoc)from here。其他验证器也可以从这里获得。
通过this guide也许会有帮助。
此示例的Schema如下所示(SampleJsonSchema.json):
使用的数据如下(SampleJsonData.json:
验证程序如下:
Package 组织试验;
可以通过更改架构和数据来运行许多测试,以观察不同的结果。