首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >泽西JSON从骆驼案例切换到下划线(蛇案例)

泽西JSON从骆驼案例切换到下划线(蛇案例)
EN

Stack Overflow用户
提问于 2016-04-15 06:52:30
回答 1查看 3.6K关注 0票数 5

我最近换了2号球衣。我浏览了文档/web,了解了如何使用.readEntity(ClassName.class);将响应类转换为自定义类

但是我仍然坚持使用CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES命名策略。

当前转换失败,因为响应字段带有"_“,而我的POJO有Snake情况。

任何帮助都将不胜感激。

在jersey1中,我一直在这样做:

代码语言:javascript
运行
复制
MyResponse myResponse = client  
        .resource(url)
        .type(MediaType.APPLICATION_JSON)
        .accept(MediaType.APPLICATION_JSON)
        .post(RequestClass.class, request);

同样,我无法实现post jersey 2:当我像上面的代码一样给出编译时错误时:

我也试过:

代码语言:javascript
运行
复制
MyResponse myResponse = client
        .target(getUrl())
        .request()
        .post(Entity.entity(request, MediaType.APPLICATION_JSON))
        .readEntity(MyResponse.class);

但是它没有创建myResponse对象,因为我得到的响应有Snake_case响应,但是我的POJO有camel case字段。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-17 14:40:20

这是需要配置杰克逊ObjectMapper的东西。您可以在ContextResolver中这样做。基本上,你需要这样的东西

代码语言:javascript
运行
复制
@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;
    }
}

然后向你的客户注册

代码语言:javascript
运行
复制
client.register(MapperProvider.class);

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36640127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档