编辑:这是 ackson-jaxrs-base 早期版本中的一个问题,已在 jackson-jaxrs-base-2.8 中解决。 https://github.com/FasterXML/jackson-jaxrs-providers/issues/22
我正在努力解决这个问题,但映射器除外。我想将 com.fasterxml.jackson.core.JsonProcessingException 的所有子级映射到 sinlge ExceptionMapper 中。
这是我的代码:
@Provider
public class JsonProcessingExceptionMapper implements ExceptionMapper<JsonProcessingException> {
@Override
public Response toResponse(JsonProcessingExceptionexception) {
return Response.status(Response.Status.BAD_REQUEST)
.entity("json parsing error!")).build();
}
使用以下代码可以正常工作:
@Provider
public class JsonMappingExceptionMapper implements ExceptionMapper<JsonMappingException> {
@Override
public Response toResponse(JsonMappingException exception) {
return Response.status(Response.Status.BAD_REQUEST)
.entity("parsing error!").build();
}
}
编辑:JsonProcessingException 是 JsonMappingException 的父级 我到底做错了什么?
最佳答案
类 com.fasterxml.jackson.jaxrs.base.JsonMappingExceptionMapper 存在于 lib 中,并且它实现了 ExceptionMapper。
因此,在第一种情况下,此映射器比您的映射器更合适,因为它处理 JsonMappingException,但您的映射器处理常见的 JsonProcessingException。
在第二种情况下,你的映射器与此映射器具有相同的级别,因此可以应用它。
关于java - Jersey 2.x ExceptionMapper 父映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39147143/