我最近换了2号球衣。我浏览了文档/web,了解了如何使用.readEntity(ClassName.class);
将响应类转换为自定义类
但是我仍然坚持使用CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
命名策略。
当前转换失败,因为响应字段带有"_“,而我的POJO有Snake情况。
任何帮助都将不胜感激。
在jersey1中,我一直在这样做:
MyResponse myResponse = client
.resource(url)
.type(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.post(RequestClass.class, request);
同样,我无法实现post jersey 2:当我像上面的代码一样给出编译时错误时:
我也试过:
MyResponse myResponse = client
.target(getUrl())
.request()
.post(Entity.entity(request, MediaType.APPLICATION_JSON))
.readEntity(MyResponse.class);
但是它没有创建myResponse
对象,因为我得到的响应有Snake_case响应,但是我的POJO有camel case字段。
发布于 2016-04-17 14:40:20
这是需要配置杰克逊ObjectMapper
的东西。您可以在ContextResolver
中这样做。基本上,你需要这样的东西
@Provider
public class MapperProvider implements ContextResolver<ObjectMapper> {
final ObjectMapper mapper;
public MapperProvider() {
mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(
PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
}
@Override
public ObjectMapper getContext(Class<?> cls) {
return mapper;
}
}
然后向你的客户注册
client.register(MapperProvider.class);
如果服务器上也需要这种支持,那么您也需要在服务器上注册它。
https://stackoverflow.com/questions/36640127
复制相似问题