Aec*_*lys 1 java spring json bean-validation spring-boot
我正在使用 Java Spring 框架并收到一个 JSON 输入。它由数千个MyObjects
. 我希望应用程序在 或 之一MyObjects
失败AnotherObjects
约束(@NotNull
或@Size
)时抛出异常。到目前为止,应用程序在对对象执行某些操作时(而不是在其构造期间)NullPointerException
访问该字段时就会抛出异常。null
我的问题是:
有没有办法最好使用注释来检查嵌套 JSON 对象的约束?
JSON 看起来像:
{
"myObjects": [
{
"code": "PQ",
"another_objects": [
{
"attr1": "value1",
"attr2": "value2",
"attrN": "valueN"
},
{
"attr1": "value1",
"attr2": "value2",
"attrN": "valueN"
}
]
},
{
...
}
]
}
Run Code Online (Sandbox Code Playgroud)
该 servlet 看起来像:
@RequestMapping(value = ...)
public final void doSomething(@Valid @RequestBody MyObjectWrapper wrapper) {
// do something very time-heavy here
}
Run Code Online (Sandbox Code Playgroud)
对象定义如下:
public class MyObjectWrapper {
private List<MyObject> myObjects;
public List<MyObject> getMyObjects() {
return myObjects;
}
public void setMyObjects(List<MyObjects> myObjects) {
this.myObjects = myObjects;
}
}
Run Code Online (Sandbox Code Playgroud)
和 MyObject 类:
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 */
}
Run Code Online (Sandbox Code Playgroud)
AnotherObjects 类似,但仅由字符串组成。
添加@Valid
到包装器的嵌套对象
public class MyObjectWrapper {
@Valid
private List<MyObject> myObjects;
public List<MyObject> getMyObjects() {
return myObjects;
}
public void setMyObjects(List<MyObjects> myObjects) {
this.myObjects = myObjects;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
837 次 |
最近记录: |