私はPOJO
を受信したJSON
から直接Jackson's ObjectMapper
を使用して作成しています。その目的のために、私はフィールドに注釈を付けます(この場合、フィールドは抽象メソッドです)。@JsonProperty
注釈を使用して、定型文を減らすためにAutoValueを使用しています。enumに対してJSONフィールドを検証する
私のPOJOのフィールドのいくつかはenums
です。ここでJSONは明らかに通常の文字列を含んでいます。オブジェクトが構築される前に、それらのJSONフィールドが実際に指定された列挙型にサブミットすることを何らかの形で検証したいと思います。
これは例です。
@JsonProperty(value = "messageType")
public abstract Optional<MessageType> messageType();
このプロパティのタイプはenum MessageType
であり、対応するJSONフィールドはieです。 "messageType": "A_1"は文字列です。
ここで、 "messageType"が "blabla"のようなものであれば、検証は失敗したいと思います。
Hibernate Validatorを使用してアノテーションでそれを検証する方法はありますか?
enum messageTypeにバインドされていない値を渡したときに受け取った現在の応答は何ですか? Jacksonライブラリまでは、要求を拒否し、検証失敗メッセージで事前に通知します。 – Rizwan
個別の検証が必要な特別な理由はありますか? Jacksonのdatabinderは問題を示し、例外を捕まえることができます。新しいバージョンのJacksonでは、問題の正確な性質に関する詳細情報が得られます。 もっと精巧な(または手動の)チェックが必要な場合は、 'java.lang.String'をとるセッターを宣言できますが、実際のフィールドにチェックして変換するために独自のコードを使用します。こうすることで、呼び出し側が処理できる、より具体的な例外( 'IOException'のサブタイプ)の問題を示すことができます。 – StaxMan