JSON的下划线转驼峰,驼峰转下划线

由于遇到了奇葩甲方,需要将数据格式转成下划线的格式,但是我们项目都是按照标准驼峰格式,所以写了个工具类来转换,不仅仅限于驼峰和下划线,根据需要传入

有没有大佬把这个递归改成迭代的

使用到的依赖

fastjon

google的guava工具包

自己的包名;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.common.base.CaseFormat;

import java.util.Objects;
import java.util.Set;


public class JsonUtil {
    public static <T extends JSON> void lowerCaseToUnderline(T json) {
        jsonKeyConverter(json, CaseFormat.LOWER_CAMEL, CaseFormat.LOWER_UNDERSCORE);
    }

    public static <T extends JSON> void underlineToLowerCase(T json) {
        jsonKeyConverter(json, CaseFormat.LOWER_UNDERSCORE, CaseFormat.LOWER_CAMEL);
    }

    public static <T extends JSON> void jsonKeyConverter(T json, CaseFormat from, CaseFormat to) {
        if (Objects.isNull(json)) {
            return;
        }
        if (json instanceof JSONObject jsonObject) {
            Set<String> keySet = jsonObject.keySet();
            String[] keyArray = keySet.toArray(new String[keySet.size()]);
            for (String key : keyArray) {
                Object o = jsonObject.get(key);
                if (o instanceof JSON json1) {
                    jsonKeyConverter(json1, from, to);
                }
                Object value = jsonObject.remove(key);
                String newKey = from.to(to, key);
                jsonObject.put(newKey, value);
            }
        }

        if (json instanceof JSONArray jsonArray) {
            for (Object o : jsonArray) {
                if (o instanceof JSON json1) {
                    jsonKeyConverter(json1, from, to);
                }
            }
        }
    }

    public static void main(String[] args) {
        String s = """
                {
                  "user": [
                    {
                      "id": 34,
                      "userName": "test_e33814e11c68",
                      "isDel": 32,
                      "createTime": "2024-01-31 15:08:40",
                      "updateTime": "2014-05-13 04:13:20",
                      "createBy": "test_c6aafd546ac1",
                      "updateBy": "test_31f6b077a3ef"
                    }
                  ]
                }
                """;
        JSONObject jsonObject = JSON.parseObject(s);
        lowerCaseToUnderline(jsonObject);
        System.out.println(jsonObject);
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值