gpt4 book ai didi

java - 将 JSON 与嵌套数组和 json 进行比较(数组顺序无关紧要)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:38 24 4
gpt4 key购买 nike

你好我正在尝试比较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 库,我会很高兴听到。或者知道如何手动实现这种比较?甚至是将这种 json 重新组织的想法,以便与我分享它很容易比较。

最佳答案

看看这个库,她很酷,我整天都在使用它进行 Web 服务测试:

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
}

关于java - 将 JSON 与嵌套数组和 json 进行比较(数组顺序无关紧要),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26762909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com