所以我必须包含这个方法这个控制器类:验证JSON请求架构
@RequestMapping(value = "/x", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<MyRepsonseClass> get(
@ApiParam(value = "x", required = true) @Valid @RequestBody MyRequestClass request
) throws IOException {
//yada yada my logic here
return something;
}
JSON的请求被自动映射到MyRequestClass.java
这是什么类的样子:
@lombok.ToString
@lombok.Getter
@lombok.Setter
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@ApiModel(description = "description")
public class MyRequestClass {
private List<SomeClass> attribute1;
private SomeOtherClass attribute2;
private YetAnotherClass attribute3;
}
这是一个有效的JSON请求的例子:
{
"attribute1": [
{
"key":"value"
}
],
"attribute3": {
"key":"value"
}
}
现在,我的要求是,当请求包含不在MyRequestClass.java存在的属性返回一个错误信息。
这样:
{
"attribute1": [
{
"key":"value"
}
],
"attribute_that_doesnt_exist": {
"key":"value"
}
}
现在它不扔任何错误。相反,它根本不会将该属性映射到任何东西。有没有我可以利用的注释可以使这种情况迅速发生?谢谢。
假设你参考这个[示例](HTTP://计算器.com/questions/35080479/how-to-valid-incoming-json-and-check-for-missing-properties-jackson-jersey)并尝试使用它建议的方法。 –
你在使用@JsonIgnoreProperties注解吗? –
如果你正在'MyRequestClass'类中使用'@ JsonIgnoreProprties',那么它不会抛出任何异常。如果你删除它,它会抛出异常 – pvpkiran