gpt4 book ai didi

java - 如果接收到无效的 JSON,则不会调用 ExceptionMapper

转载 作者:行者123 更新时间:2023-12-01 13:35:25 27 4
gpt4 key购买 nike

我正在使用 Jersey 2.5.1 和 Jackson 2.2。用于构建 JSON Rest Web 服务。我也用 2 个 ExceptionMappers 启动并运行它,但对于“非 json”请求,应用程序不会抛出任何异常!

  1. 异常映射器将被调用,如果例如抛出 NullPointerException

  2. 异常映射器如果 JSon 映射出现问题将会被调用

我的问题:1. 请求正文:{} 有效2. 请求正文:{} 与应用程序端 NullPointer 调用第一个异常映射器3. 请求正文:“jibberish”不会调用任何内容(不会被任何 ExceptionMapper 捕获),因为不会引发异常。不幸的是,响应正文类似于:无法识别的字段“xxx”(com.sample.MyDto 类),未标记为可忽略(9 个已知属性.......> 但我想自定义错误消息,因为我总是返回一个 Json 对象。

最佳答案

好的,我解决了。最终让我认为正确的方法是,有时它会起作用,所以它必须是一些覆盖类加载问题。

在我的 ApplicationClass 中,我根据这样的包注册了 Provider

    @ApplicationPath("resources")
public class JerseyApplication extends ResourceConfig {
public JerseyRestApplication() {
packages("com.sample", "com.fasterxml.jackson.jaxrs.json");
}
}

如果你细心的话,你可能会发现错误!我将“com.fasterxml.jackson.jaxrs.json”放在搜索路径上,因为我想使用 JacksonJsonProvider.class。我不知道的是,在该包中还有一些用于 JsonParseException 等的 JsonMappers,并且这些不记录:)

所以有时应用程序首先加载我的应用程序,有时加载来自 jackson 的应用程序。所以我现在要坚持以下几点:

@ApplicationPath("resources")
public class JerseyRestApplication extends ResourceConfig {
public JerseyApplication() {
register(JacksonJsonProvider.class); // Do it manually

packages("com.sample");
}
}

希望对某人有帮助:D

关于java - 如果接收到无效的 JSON,则不会调用 ExceptionMapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21312121/

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