Java 更好地记录Jackson解析错误
我正在开发一个用Jackson-2.2.3构建的REST应用程序 以下是依赖关系:Java 更好地记录Jackson解析错误,java,rest,jackson,Java,Rest,Jackson,我正在开发一个用Jackson-2.2.3构建的REST应用程序 以下是依赖关系: <dependency> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-json-provider</artifactId> <version>2.2.3</version> </dependency> 由
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.2.3</version>
</dependency>
由于此端点使用JSON,当api用户发送JSON时,Jackson将取消对User
对象的搜索
如果用户使用错误的JSON调用端点,例如缺少属性或错误的结构。我想将错误JSON记录为字符串和错误。
我怎样才能做到这一点
我尝试使用过滤器,但没有成功。考虑处理以下问题:
解析问题的异常类型,在遇到格式不正确的内容(根据规范不符合JSON语法的内容)时使用
要实现这一目标,您可以使用:
@Slf4j
@提供者
公共类JsonParseExceptionMapper实现ExceptionMapper{
@凌驾
公共响应响应(JsonParseException异常){
log.error(“无法解析JSON”,异常);
返回Response.status(Response.status.BAD_请求)
.entity(“无法解析JSON”)
.type(MediaType.TEXT\u PLAIN)
.build();
}
}
出于日志记录的目的,您可能还对使用exception.getLocation()
获取一些详细信息感兴趣
要在Jersey中注册异常映射程序,请参阅此项。显示未能注册的筛选器log@Kishor普拉卡什,你为什么要这个?若客户机发送了错误的json,他将得到错误响应。在服务器端的日志中,您会收到来自Jackson的错误消息。两者都应该包含错误的确切属性。在这种情况下,将不会调用createUser方法。另外还有什么目的?@Alexandr我想从负载中记录特定于客户端的ID,并用ELK中的图形可视化。
@POST
@Path(value = "/addUser")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response createUser(User user) {
...
}