所以我必須包含這個方法這個控制器類:驗證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