0

バリデーターアノテーションでアノテーションが付けられた Java クラスにバインドされた JSON ペイロードに複数回出現する要素に対して、Hibernate バリデーターを使用して検証するにはどうすればよいですか?

私が次のものを持っているとしましょう:

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 検証は、2 つのまったく異なるものです。Hibernate の検証が開始されるまでには、Person名前フィールドが 1 つしかないオブジェクトだけが表示されます。

どの「名前」フィールドが Java Bean に逆シリアル化されるか (または例外がスローされるか) を決定するのは、 JSON ライブラリの動作です。ほとんどの場合、重複が提供されていないことを検証したい場合は、カスタムの逆シリアル化コードを記述する必要があります。

于 2013-02-17T01:44:37.813 に答える