当前位置: 首页 > 知识库问答 >
问题:

如何为Jersey 1.0客户端设置自定义Jackson ObjectMapper

孔俊爽
2023-03-14

我使用Jersey 1.0 http客户端调用资源并反序列化响应JSON,如下所示:

Client client = Client.create(new DefaultClientConfig())
ClientResponse clientResponse = client.resource("http://some-uri").get(ClientResponse.class)
MyJsonRepresentingPOJO pojo = clientResponse.getEntity(MyJsonRepresentingPOJO.class)

现在响应JSON有了一些新字段,我得到了以下异常:

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "xyz"

如何将jackson的反序列化模式更改为NON-STRICT,以便它忽略新字段?

共有1个答案

督宏旷
2023-03-14

要配置< code>ObjectMapper用于Jersey,您可以

>

  • 创建上下文解析程序,如下所示,并将该解析程序注册到客户端。

    ClientConfig config = new DefaultClientConfig();
    config.register(new ObjectMapperContextResolver());
    Client client = Client.create(config);
    

    或者实例化< code>ObjectMapper中作为构造函数参数传递的< code>JacksonJsonProvider。然后向< code >客户端注册提供程序

    ClientConfig config = new DefaultClientConfig();
    config.register(new JacksonJsonProvider(mapper));
    Client client = Client.create(config);
    

    请注意,如果您使用的是JAXB注释,则需要使用JacksonJaxbJson提供程序

    要忽略未知属性,可以在<code>ObjectMapper</code>上设置一个配置属性,如Sam B.的链接所示

    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    

    编辑

    我在上面的例子中犯了一个错误。Jersey 1.x 中没有 ClientConfig注册方法。相反,请使用getSingletons().add(...)。有关详细信息,请参阅 API。

  •  类似资料:
    • 问题内容: 如何使HTTPClient使用自定义User-Agent标头? 以下代码提交空的用户代理。我想念什么? 问题答案: 线 不见了。添加并享受。

    • 问题内容: 我正在与socket.io聊天应用程序,我想用我的自定义客户端ID,而不是默认的(,)。连接时是否有任何发送自定义标识符的方式,或仅使用某种方式来跟踪每个ID的自定义名称?谢谢! 问题答案: 您可以在服务器上创建一个数组,并在其上存储自定义对象。例如,您可以存储Socket.io创建的ID和每个客户端发送到服务器的自定义ID: 在此示例中,您需要从每个客户端调用 storeClient

    • 在我做了插座之后。多房间聊天应用程序的IO服务器如何使用https://github.com/socketio/socket.io-client-java ? 我搜索了很多,在socket的客户端还没有找到最新的例子。对于android,大多数教程和示例都是针对带有节点的服务器端的。js。

    • 我使用使用SSL的安全通道通过JMS与Weblogic IBM Webpsphere MQ建立了连接。我在Weblogic上的应用程序收到了来自MQ的消息。正在将应答发送到应答队列。响应头存在MQMD,它填充java。在参数持久化JMS发送值“1”中。其他系统需要在持久化时接收值“0”。如何将此参数设置为java?我猜这个参数是javax。jms。deliverymode。但我不知道怎么设置。 无

    • 我正在使用MPAndroidChart显示一个相对简单的条形图。 有2件事我需要设置,我不知道如何自定义: > 我需要为每个条添加文本,而不是简单的值,每个条本身也有样式。 在每个条的顶部,我需要放置各种类型的可绘制材料来覆盖它的宽度(例如一个条中高度为2dp的蓝色,或另一个条上高度相同的黄色渐变)。 下面是我需要做的一个演示: > 我知道我也可以通过使用添加图标,但这似乎不适用于应该使用整个条形

    • 问题内容: 我正在使用Spring 3.1,并且想使用新的缓存功能。然后,我尝试: 但是我没有找到配置自定义KeyGenerator的方法。任何想法? 问题答案: 好的,我只是找到一种方法来做… 如您所见,我使用AnnotationDrivenCacheBeanDefinitionParser,将配置放入xml中,并且可以::完成! 编辑: 对于Spring> 3.2,可以使用实现CachingC