簡體   English   中英

如何為 Quarkus REST 客戶端配置 ObjectMapper

[英]How to configure ObjectMapper for Quarkus REST Client

我知道您可以實現ObjectMapperCustomizer來為您的 Quarkus REST 服務配置映射器。 但是,Quarkus REST 客戶端的文檔中並不清楚它是否會使用相同的(全局?)映射器。 當外部服務的 JSON 命名約定與您自己的服務不同時,您如何處理這種情況? 我找不到為 REST 客戶端配置 ObjectMapper 的方法。 我假設您可以使用 Jackson 注釋來解決此問題,但我正在尋找一種僅通過配置 ObjectMapper 來解決此問題的方法。

所以,基本上,問題是:如何為一個特定的 REST 客戶端配置單獨的 ObjectMapper?

我遇到了同樣的問題。 通過大量的試驗和錯誤,我發現了以下作品:

首先,定義一個實現 JAX-RS ContextResolver 的 class:

public class ClientObjectMapper implements ContextResolver<ObjectMapper> {
    @Override
    public ObjectMapper getContext(Class<?> type) {
        ObjectMapper om = new ObjectMapper();
        om.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
        om.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        om.setPropertyNamingStrategy(PropertyNamingStrategy.UPPER_CAMEL_CASE);
        return om;
    }
}

然后在您的客戶端界面上只需添加@RegisterProvider(ClientObjectMapper.class)

從我到目前為止所做的測試來看,這將有效地產生與您使用 ClientBuilder 手動構建 HTTP 客戶端相同的效果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM