2016-04-15 89 views
5

我最近切换到泽西岛2。 我通过文档/网页了解如何将响应类转换为自定义类使用.readEntity(ClassName.class);Jersey JSON从骆驼案件切换到下划线(蛇案)

但我坚持使用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); 

我不能达到岗位的球衣2相同: 它提供了编译时错误,当我在上面的代码:

我也试过:

MyResponse myResponse = client 
     .target(getUrl()) 
     .request() 
     .post(Entity.entity(request, MediaType.APPLICATION_JSON)) 
     .readEntity(MyResponse.class); 

,但它不是创建myResponse对象,使我得到了Snake_case响应的反应,但我的POJO有骆驼领域。

+0

请显示我真实的代码 –

回答

5

这是需要与杰克逊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); 

注册如果您需要在服务器上的这种支持也,那么你将需要注册在服务器上了。

+0

这解决了它。谢谢:)不能upvote由于低信誉的答案:( – k1133