Сравните две структуры JSON и получите несоответствия изменений - PullRequest
0 голосов
/ 28 августа 2018

Привет, у меня есть структура json # 1 и # 2 следующим образом. Я хотел бы сравнить и зафиксировать результаты.

Json # 1.

{
    "menu": {
        "id": "file",
        "popup": {
            "menuitem": {
                "menuitem-1": "sometext",
                "menuitem-2": {
                    "menuitem-2.1": "sometext",
                    "menuitem-2.2": "sometext",
                    "menuitem-2.3": {
                        "menuitem-2.3.1": "sometext"
                    }
                }
            }
        },
        "value": "File"
    }
}

Json # 2

{
    "menu": {
        "id": "file",
        "popup": {
            "menuitem": {
                "menuitem-2.3": {
                    "menuitem-2.3.1": "sometext"
                }
                "menuitem-1": "sometext",
                "menuitem-2": {
                    "menuitem-2.1": "sometext",
                    "menuitem-2.2": "sometext"
                },
            }
        },
        "value": "File"
    }
}

Я ожидаю, что ниже JSON был перемещен в JSON # 2. Моя цель здесь состоит в том, чтобы идентифицировать любые CREATE NEW / UPDATE / ADJUSTED / DELETE на JSON # 2.

"menuitem-2.3": {
   "menuitem-2.3.1": "sometext"
}

Существует ли какая-либо существующая среда Spring / Java, доступная для достижения выше?

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Используйте отличие от org.apache.commons.lang.StringUtils. Сравнивает две строки и возвращает часть, в которой они отличаются. (Точнее, вернуть остаток второй строки, начиная с того места, где она отличается от первой.)

Например,

difference("i am a machine", "i am a robot") -> "robot".
StringUtils.difference(null, null) = null
StringUtils.difference("", "") = ""
StringUtils.difference("", "abc") = "abc"
StringUtils.difference("abc", "") = ""
StringUtils.difference("abc", "abc") = ""
StringUtils.difference("ab", "abxyz") = "xyz"
StringUtils.difference("abcde", "abxyz") = "xyz"
StringUtils.difference("abcde", "xyz") = "xyz"

Параметры: str1 - первая строка, может быть нулевой str2 - вторая строка, может быть нулевой

0 голосов
/ 28 августа 2018

Попробуйте использовать Apache Drill. Он прост в установке и поддерживает запросы к JSON. Затем вы можете выполнить минус-запрос и получить разницу.

Вы также можете запросить детализацию, используя Java. Apache Drill имеет драйвер JDBC для этого.

Надеюсь, это поможет. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...