如何使用Hibernate验证器验证绑定到使用验证器注释注释的Java类的JSON有效负载中多次出现的元素?
假设我有以下内容:
class Person {
String name;
int age;
}
我将JSON绑定到Person。
JSON有效负载如下所示:
{
"name":"someName",
"age":30
}
假设有效载荷有2个“名称”字段,如下所示。
{
"name":"someName",
"name" : "otherName",
"age":30
}
然后我想使用验证器来验证这一点。如果我使用@Size(min = 1,max = 1),它将适用于Collection对象。
我想知道我是如何为String工作的。使用String @Size尝试查找字符串内容的长度,而不是有效负载中字符串内容的次数。
谢谢你的时间!
答案 0 :(得分:1)
这是不可能的。 JSON反序列化和Bean验证是两个 完全 不同的东西。当你的Hibernate验证开始时,它看到的是一个Person
对象,只有一个名称字段。
JSON库的行为将决定将哪个“name”字段反序列化到Java bean中(或者如果抛出异常)。在大多数情况下,如果要验证没有提供重复项,那么您将需要编写一些自定义反序列化代码。