0
我需要从一个请求主体验证收到的JSON,需要一些字段,但如果JSON没有它,他们只是检索为空:的Java验证传入的JSON匹配与模型类
@Document(collection = "menus")
public class Module {
/** The module name as unique identifier. */
@Indexed(unique = true)
private String name;
/** The internationalization key. */
private String i18n;
/** The Angular state. */
private String state;
...
}
如果传入的JSON具有这样的结构,无名称:
{
"i18n": "INVOICES",
"state": "/invoices"
}
模块是有效的和持久化为:
{
"name": null,
"i18n": "INVOICES",
"state": "/invoices"
}
为了验证这一传入的JSON我创建了一个验证这样的:
public class MenuValidator implements Validator {
/** The menu service. */
private MenuService service;
public MenuValidator(MenuService service) {
this.service = service;
}
@Override
public boolean supports(Class<?> objectClass) {
return objectClass.equals(Module.class);
}
@Override
public void validate(Object object, Errors errors) {
try {
String name = ((Module) object).getName());
if(name==null){
errors.rejectValue("name", "name.null","The module name is null");
}
...
}
但是,这是如此棘手,当我有一个复杂的结构,我需要验证各个领域。有没有任何选项可以验证我的结构而不需要逐场验证?
只给你一个指针,您可以创建JSON模式,如果你输入的要求是通用的,并与JSON模式的客户端验证。检查https://davidwalsh.name/json-validation。 –