好的,我们都知道有足够的java库来匹配json对象,比如gson和Jackson,这些库可以做我需要的一切(比较嵌套的、无序的、“不完整”的对象)。但是现在我尝试使用占位符来表示我知道类型但不知道确切值的值。我正在寻找一个准备好使用的equalsWithTypePlaceholders(JSONObject object1,JSONObject object2)方法。当然你可以自己做这件事,我个人会读取对象,挑选出带有占位符的键,检查它们是否匹配正确的类型,然后从json中删除这些键值对,并使用任何库中的equals()方法。
假设我已经准备好了这个模式(object1)
[
{
"list": [
{
"id": "{int}",
"anotherlist": [
{
"name": "{string}",
"value": "abc"
}
],
"key": "{alphanumeric-string}",
"name": "{alphanumeric-string}"
}
],
"key1":"value2"
}
]
以下输入(object2)应返回true,因为现有值匹配,并且占位符已替换为正确的类型
[
{
"list": [
{
"id": "123",
"anotherlist": [
{
"name": "name",
"value": "abc"
}
],
"key": "123asd",
"name": "987asdas"
}
],
"key1":"value2"
}
]
以下输入(object2)应返回false,因为现有值不匹配,并且2个占位符的类型错误
[
{
"list": [
{
"id": "hello",
"anotherlist": [
{
"name": "123",
"value": "abcde"
}
],
"key": "123asd",
"name": "312qwe"
}
],
"key1":"value2"
}
]
1条答案
按热度按时间t0ybt7op1#
我认为您在这里混淆了定义。您的最终任务不是检查“是否相等”,而是与模式进行匹配。因此您应该查看json-schema和how to validate against it
我想这将是你进一步研究的最好方向。