您好我正在尝试比较java中的两个json,每个键都可以包含一个json对象或json对象数组,并且每个键都可以是一个数组或json。
以下是Json的一个例子:
{
"id": "123123asd123",
"attributes": [
{
"name": "apps",
"values": [
"111",
"222"
]
},
{
"name": "city",
"values": [
"NY"
]
}
]
}
我希望能够从这种类型中获得两个json,并在不关心数组顺序的情况下对它们进行比较。 正如你所看到的那样,关键'属性是一个json数组,所以如果我有另一个json就像这里的那个,并且带有关键城市的数组中的元素是在我希望测试通过的应用之前。 以及应用程序值内的数字我不在乎它是111,222还是222,111
如果有人知道任何外部java lib正在做那个生病的快乐听到。 或者任何想法如何手动实现这种比较?或者甚至是这种json的想法,并重新组织它,这样就可以很容易地与我分享。
答案 0 :(得分:1)
看看这个库,她很酷,我整天都在使用它进行Webservice测试:
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
}