我有一个这样的Sping Boot RestController
public class MyRestController{
@RequestMapping(value = "/resources", method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE)
@ApiResponses(value = { @ApiResponse(code = 201, message = "Created",
response = Resource.class) })
@ResponseStatus( HttpStatus.CREATED )
public Resource createResource(@RequestBody Resource res){
}
@JsonIgnoreProperties(ignoreUnknown = false)
public class Resource{
private String resourceName;
private int value;
}
当我传递这样的json时:
{
"unknownProperty": "test",
"value::100
}
我希望在设置@JsonIgnoreProperties(ignoreUnknown = false)后抛出一个异常,但这并没有发生。
2条答案
按热度按时间jyztefdp1#
据我所知,被忽略的属性意味着被默默忽略。如果你特别想在你不希望看到的属性上抛出异常,那么就创建一个自定义的反序列化器,并要求你的类型用它来序列化。
@JsonDeserialize(using = MyCustomDeserializer.class)
(在您的类型上)。我认为您的自定义反序列化器需要扩展
JsonDeserializer<MyType>
要获得您正在寻找的反序列化失败,您需要覆盖
deserialize()
,并在其中创建一个对象Map器,然后按如下所示配置它。objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
vhipe2zx2#
是否可以添加一个bean来配置ObjectMapper: