0

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

谢谢你的时间!

4

1 回答 1

1

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

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

于 2013-02-17T01:44:37.813 回答