比较两个json结构并获得不匹配的更改

时间:2018-08-28 14:39:22

标签: java json spring-boot

嗨,我有json结构#1和#2,如下所示。我想比较并捕获结果。

杰森#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中上移。我的目标是识别JSON#2上的任何CREATE NEW / UPDATE / ADJUSTED / DELETE。

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

是否有可用于上述目的的Spring / Java现有框架?

2 个答案:

答案 0 :(得分:0)

使用与org.apache.commons.lang.StringUtils的区别。 比较两个字符串,并返回它们不同的部分。 (更准确地说,从第二个String与第一个String不同的地方返回其余的String。)

例如

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-第一个String,可以为null str2-第二个字符串,可以为空

答案 1 :(得分:-1)

尝试使用Apache演练。它易于安装,并支持查询JSON。然后,您可以执行减号查询并获得差额。

您还可以使用Java查询钻取。 Apache演练为此提供了JDBC驱动程序。

希望有帮助。 :)