我有一个客户端应用程序,我用它来使用一些API并更新它。我使用Jersey 2.25.1和Jersey Jackson,没有自定义连接器,只是基本的设置。
我有一个使用Jackson和Jersey序列化的POJO,但我需要以两种方式序列化这个POJO,第一个是在序列化时包含所有空值,第二个是忽略并删除空字段。 / p>
这就是API的工作方式,因此API无法更改(它不是我的API),所以我想问我可以在运行时更新Jersey Jackson Mapper吗?
我正在寻找的是:
Client client = ClientBuilder.newBuilder()
.register(JacksonFeature.class)
.build();
client.getJacksonObjectMapper().setSerializationInclusion(Include.NON_NULL);
答案 0 :(得分:1)
您可以使用ContextResolver
,并在那里配置ObjectMapper
。杰克逊提供商将调用上下文解析器来获取ObjectMapper
class JacksonResolver implements ContextResolver<ObjectMapper> {
private final ObjectMapper mapper = new ObjectMapper();
public JacksonResolver() {
// configure mapper
}
@Override
public ObjectMapper resolve(Class<?> cls) {
return this.mapper;
}
}
Client client = ClientBuilder.newBuilder()
.register(JacksonFeature.class)
.register(new JacksonResolver())
.build();