1
私はJava Springフレームワークで作業しており、入力時にJSONを受け取ります。これは、MyObjects
の何千もの配列で構成されています。 MyObjects
またはAnotherObjects
のいずれかが制約(@NotNull
または@Size
)に失敗した場合、アプリケーションが例外をスローするようにしたいと思います。 オブジェクトの作成中ではなく、オブジェクトで何かをするときに、null
フィールドにアクセスすると、これまでアプリケーションはNullPointerException
をスローします。Java |ラッパー内のJSONオブジェクトの検証
私の質問は:
はアノテーションでできれネストされたJSONオブジェクトの制約をチェックする方法はありますか?次のようにオブジェクトが定義されてい
@RequestMapping(value = ...) public final void doSomething(@Valid @RequestBody MyObjectWrapper wrapper) { // do something very time-heavy here }
:
public class MyObjectWrapper { private List<MyObject> myObjects; public List<MyObject> getMyObjects() { return myObjects; } public void setMyObjects(List<MyObjects> myObjects) { this.myObjects = myObjects; } }
そして、MyObjectにクラス:
サーブレットがどのように見える{ "myObjects": [ { "code": "PQ", "another_objects": [ { "attr1": "value1", "attr2": "value2", "attrN": "valueN" }, { "attr1": "value1", "attr2": "value2", "attrN": "valueN" } ] }, { ... } ] }
:のようにJSONに見える
public class MyObject {
@NotNull
@NotEmpty(message = ...)
List<AnotherObject> anotherObjects;
@NotNull
@Size(min = 2, max = 2, message = ...)
String code;
@JsonCreator
public MyObject(@JsonProperty("another_objects") List<AnotherObjects> anotherObjects,
@JsonProperty("code") String code) {
this.code = code;
this.anotherObjects = anotherObjects;
}
/* getters and setters */
}
AnotherObjectsは類似していますが、文字列のみで構成されています。
のネストされたオブジェクトに
@Valid
を追加します。 – Aechlys