Retrofit2 + RxJava + Jackson 默默失败
Retrofit2 + RxJava + Jackson fails silently
我正在研究 Java 8 REST 客户端设置,使用 Retrofit2 和 RxJava。当使用 GsonConverterFactory
时,一切都按预期工作。当切换到 JacksonConverterFactory
时,我根本看不到任何结果(但也不例外)。根据日志,REST调用本身是OK的。
GitHub 上的完整示例。
Retrofit 的 JacksonConverterFactory
默认情况下不会忽略未知属性(与例如 Feign 的 JacksonDecoder
相反)。
因此需要配置自定义 ObjectMapper
并将 FAIL_ON_UNKNOWN_PROPERTIES
功能设置为 false
:
ObjectMapper jacksonMapper = new ObjectMapper().configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(JacksonConverterFactory.create(jacksonMapper))
.build();
我正在研究 Java 8 REST 客户端设置,使用 Retrofit2 和 RxJava。当使用 GsonConverterFactory
时,一切都按预期工作。当切换到 JacksonConverterFactory
时,我根本看不到任何结果(但也不例外)。根据日志,REST调用本身是OK的。
GitHub 上的完整示例。
Retrofit 的 JacksonConverterFactory
默认情况下不会忽略未知属性(与例如 Feign 的 JacksonDecoder
相反)。
因此需要配置自定义 ObjectMapper
并将 FAIL_ON_UNKNOWN_PROPERTIES
功能设置为 false
:
ObjectMapper jacksonMapper = new ObjectMapper().configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(JacksonConverterFactory.create(jacksonMapper))
.build();