你好,我正在尝试比较java中的两个json,每个键可以包含一个json对象或json对象数组,并且它们中的每个也可以是数组或json。
这是 Json 的示例:
{
"id": "123123asd123",
"attributes": [
{
"name": "apps",
"values": [
"111",
"222"
]
},
{
"name": "city",
"values": [
"NY"
]
}
]
}
我希望能够从这种类型中获取两个 json 并比较它们,而不关心数组的顺序。
正如您所看到的,关键“attributes”是一个 json 数组,因此如果我有另一个像这里一样的 json,并且数组中带有关键城市的元素位于应用程序之前,我希望测试通过。
还有应用程序值中的数字,我不在乎它是 111,222 还是 222,111
如果有人知道任何外部 java 库正在这样做,我会很高兴听到。
或者知道如何手动实现此比较?或者甚至有一个想法,将这种 json 并重新组织它,这样就可以很容易地与我分享它。
看看这个库,她很酷,我整天都在使用它进行 Web 服务测试:
https://github.com/jayway/JsonPath https://github.com/jayway/JsonPath
@Test
public void test() {
String json = "{\n" +
" \"id\": \"123123asd123\",\n" +
" \"attributes\": [\n" +
" {\n" +
" \"name\": \"apps\",\n" +
" \"values\": [\n" +
" \"111\",\n" +
" \"222\"\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"name\": \"city\",\n" +
" \"values\": [\n" +
" \"NY\"\n" +
" ]\n" +
" }\n" +
" ]\n" +
"}";
List<String> names = JsonPath.read(json, "$.attributes[*].name");
for(String name : names) {
//TODO assert that name is in other list from other json
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)