String的Java验证器

时间:2013-02-17 01:27:44

标签: json hibernate-validator

如何使用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尝试查找字符串内容的长度,而不是有效负载中字符串内容的次数。

谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

这是不可能的。 JSON反序列化和Bean验证是两个 完全 不同的东西。当你的Hibernate验证开始时,它看到的是一个Person对象,只有一个名称字段。

JSON库的行为将决定将哪个“name”字段反序列化到Java bean中(或者如果抛出异常)。在大多数情况下,如果要验证没有提供重复项,那么您将需要编写一些自定义反序列化代码。