【发布时间】:2017-08-10 07:03:58
【问题描述】:
我正在使用 Java Spring 框架并在输入时接收 JSON。它由数千个MyObjects 组成。如果MyObjects 或AnotherObjects 之一失败约束(@NotNull 或@Size),我希望应用程序抛出异常。
到目前为止,应用程序在对对象执行某些操作时(而不是在其构造期间)访问null 字段时会抛出NullPointerException。
我的问题是:
有没有办法检查嵌套 JSON 对象的约束,最好使用注解?
JSON 看起来像:
{
"myObjects": [
{
"code": "PQ",
"another_objects": [
{
"attr1": "value1",
"attr2": "value2",
"attrN": "valueN"
},
{
"attr1": "value1",
"attr2": "value2",
"attrN": "valueN"
}
]
},
{
...
}
]
}
servlet 如下所示:
@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 类:
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 类似,但仅包含字符串。
【问题讨论】:
标签: java json spring spring-boot bean-validation