前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Map中key值变换(驼峰,下划线,中横线)

Map中key值变换(驼峰,下划线,中横线)

作者头像
allsmallpig
发布2021-02-25 15:24:44
1.7K0
发布2021-02-25 15:24:44
举报
文章被收录于专栏:allsmallpi博客allsmallpi博客

写在前面

一、下划线 <----> 驼峰

1.1、hutool 代码示例

代码语言:javascript
复制
   @Test
    public void t2() {
        Map a = new HashMap() {{
            put("area_id", 100);
            put("area_Name", null);
        }};
        Map b = new HashMap<>();
        a.forEach((k,v) -> b.put(StrUtil.toCamelCase(k), v));
        System.out.println(b);
    }
// 结果
// {areaId=100, areaName=null}
代码语言:javascript
复制
   @Test
    public void t21() {
        Map a = new HashMap() {{
            put("areaId", 100);
            put("areaName", null);
        }};
        Map b = new HashMap<>();
        a.forEach((k,v) -> b.put(StrUtil.toUnderlineCase(k), v));
        System.out.println(b);
    }

// {area_name=null, area_id=100}

1.2、Guava

代码语言:javascript
复制
    @Test
    public void t3() {
        Map a = new HashMap() {{
            put("area_id", 100);
            put("area_Name", null);
        }};
        Map b = new HashMap<>();
        a.forEach((k,v) -> b.put(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, k), v));
        System.out.println(b);
    }
// {areaId=100, areaName=null}
代码语言:javascript
复制
    @Test
    public void t31() {
        Map a = new HashMap() {{
            put("areaId", 100);
            put("areaName", null);
        }};
        Map b = new HashMap<>();
        a.forEach((k,v) -> b.put(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, k), v));
        System.out.println(b);
    }
    // 
    // {area_name=null, area_id=100}

1.3、Gson + Hutool/Guava

这里其实Gson 并没具体实现下划线和 驼峰式的互转,只提供了 驼峰式 到 空格,下划线、中横线、首字母大写的单项转换, 从其他任何到驼峰式是没有实现的,不过Gson 提供了很方便的自定义转换策略,如下,

下面代码,Gson + Hutool 的实现下划线转驼峰命名 ,关于Gson 的相关操作学习,可参考,这里

代码语言:javascript
复制
    @Test
    public void t19() {
        FieldNamingStrategy customPolicy = new FieldNamingStrategy() {
            @Override
            public String translateName(Field f) {
                return StrUtil.toCamelCase(f.getName());
            }
        };

        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.setFieldNamingStrategy(customPolicy);
        Gson gson = gsonBuilder.create();

        UserNaming user = new UserNaming("Norman", "norman@futurestud.io", true, 26);
        String usersJson = gson.toJson(user);

        System.out.println(usersJson);
    }

对于其它形式的互转,除了Gson本身实现的几个,另外别的都是可以自定义实现转换规则的,这里就不再详细介绍说明了…

1.4、fastxml 的实现

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-12-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
    • 一、下划线 <----> 驼峰
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档