gpt4 book ai didi

java - 更好地记录 Jackson 解析错误

转载 作者:行者123 更新时间:2023-11-30 12:03:27 35 4
gpt4 key购买 nike

我正在开发使用 Jackson-2.2.3 构建的 REST 应用程序。

这是依赖关系:

<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.2.3</version>
</dependency>

我有一个简单的端点来创建用户,如下所示:

@POST
@Path(value = "/addUser")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response createUser(User user) {
...
}

由于此端点使用 JSON,当 api 用户发送 JSON 时,Jackson 将反序列化为 User 对象。

如果用户使用错误的 JSON 调用端点,例如缺少属性或结构错误。我想将故障 JSON 记录为字符串和 ERROR。我怎样才能做到这一点?

我尝试使用过滤器但没有用。

最佳答案

考虑处理 JsonParseException :

Exception type for parsing problems, used when non-well-formed content (content that does not conform to JSON syntax as per specification) is encountered.

要实现它,您可以使用 ExceptionMapper :

@Slf4j
@Provider
public class JsonParseExceptionMapper implements ExceptionMapper<JsonParseException> {

@Override
public Response toResponse(JsonParseException exception) {
log.error("Cannot parse JSON", exception);
return Response.status(Response.Status.BAD_REQUEST)
.entity("Cannot parse JSON")
.type(MediaType.TEXT_PLAIN)
.build();
}
}

出于记录目的,您可能还对从 JsonLocation 获取一些详细信息感兴趣。使用 exception.getLocation()


要在 Jersey 中注册异常映射器,请参阅此 answer .

关于java - 更好地记录 Jackson 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57770887/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com