import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;import java.util.*;/*** @Description JOSNObject 驼峰转换工具* @Author WangKun* @Date 2021/9/17 15:12* @Version*/
public class JSONObjectUtil {/*** @param json* @Description 驼峰命名转换* @Throws* @Return com.alibaba.fastjson.JSONObject* @Date 2021-09-17 17:04:31* @Author WangKun**/public static JSONObject humpConvertJSONObject(JSONObject json) {if (null == json) {return null;}Set<String> keys = json.keySet();String[] array = keys.toArray(new String[0]);for (String key : array) {Object value = json.get(key);String[] keyArray = key.toLowerCase().split("_");if (isUpperCase(key) && !key.contains("_")) {json.remove(key);json.put(key.toLowerCase(), value);continue;}if (keyArray.length > 1) {StringBuilder sb = new StringBuilder();for (int i = 0; i < keyArray.length; i++) {String ks = keyArray[i];if (!"".equals(ks)) {if (i == 0) {sb.append(ks);} else {int c = ks.charAt(0);if (c >= 97 && c <= 122) {int v = c - 32;sb.append((char) v);if (ks.length() > 1) {sb.append(ks.substring(1));}} else {sb.append(ks);}}}}json.remove(key);json.put(sb.toString(), value);}}return json;}/*** @param objectList* @Description 驼峰转换* @Throws* @Return java.util.List<com.alibaba.fastjson.JSONObject>* @Date 2021-09-17 17:09:15* @Author WangKun**/public static List<JSONObject> humpConvertListObject(List<JSONObject> objectList) {if (null == objectList || objectList.size() <= 0) {return null;}List<JSONObject> data = new ArrayList<>();for (JSONObject object : objectList) {data.add(humpConvertJSONObject(object));}return data;}/*** @param array* @Description 驼峰转换* @Throws* @Return java.util.List<com.alibaba.fastjson.JSONObject>* @Date 2021-09-17 17:13:22* @Author WangKun**/public static List<JSONObject> humpConvertJSONArray(JSONArray array) {if (null == array || array.size() <= 0) {return null;}List<JSONObject> data = new ArrayList<>();for (int i = 0; i < array.size(); i++) {data.add(humpConvertJSONObject(array.getJSONObject(i)));}return data;}/*** @param str* @Description 判断字符串字母是否为大写* @Throws* @Return boolean* @Date 2021-09-17 17:03:50* @Author WangKun**/public static boolean isUpperCase(String str) {for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);if (c >= 97 && c <= 122) {return false;}}return true;}public static void main(String[] args) {JSONObject jsonObject = new JSONObject();jsonObject.put("QWE_QWE1","1");jsonObject.put("qwe_qwe2","2");jsonObject.put("qwe_Qwe3","3");jsonObject.put("QWEQWE4","4");jsonObject.put("qweqwe5","5");jsonObject.put("qweQwe6","6");System.out.println(humpConvertJSONObject(jsonObject));}}

Java 驼峰命名转换相关推荐

  1. IDEA如何使用快捷键进行驼峰命名转换

    IDEA如何使用快捷键进行驼峰命名转换 第一步:安装插件 第二步:设置需要的模式 第三步:使用 常用格式:ABC_DEF.abc_def.abcDef等等 第一步:安装插件 idea菜单栏-file- ...

  2. mybatis中mapUnderscoreToCamelCase自动驼峰命名转换

    ssm项目中在mybatis配置文件中添加以下配置,可以将数据库中user_name转化成userName与实体类属性对应,如果数据库使用如user_name的命名方式,实体类采用驼峰命名.配置后无需 ...

  3. java驼峰命名法是什么_什么是驼峰命名法

    导航:网站首页 > 什么是驼峰命名法 什么是驼峰命名法 匿名网友: 程序往往不是一个人能够出来的,所以就必须制定一个规则,大家都按照同样的方式做事,叫做编码约定. 比如变量都定义为nCounte ...

  4. 字符串的下划线命名和驼峰命名转换

    /*** 将驼峰式命名的字符串转换为下划线大写方式.如果转换前的驼峰式命名的字符串为空,则返回空字符串.</br>* 例如:HelloWorld->HELLO_WORLD* @par ...

  5. 【Py】下划线命名与驼峰命名转换方式汇总

    下划线转驼峰 方法一 def to_camelcase(text):arr = filter(None, text.lower().split('_'))res = ''j = 0for i in a ...

  6. Java 驼峰命名转下划线命名(能正确处理连续HTTP等大写)

    文章目录 [1]功能(驼峰转下划线) [2]测试用例 [3]如果使用有Bug,欢迎评论区留言 [1]功能(驼峰转下划线) 只遍历输入字符串一遍 能够处理处理连续的大写字母如 HTTP 首字母可大写可小 ...

  7. JS字符串的下划线命名和驼峰命名转换

    2019独角兽企业重金招聘Python工程师标准>>> 1.驼峰转连字符: var s = "fooStyleCss";   s = s.replace(/([A ...

  8. Spring Boot——统一设置返回Json数据风格(Java驼峰命名法转下划线命名法)解决方案

    基本概念 HttpMessageConverter: org.springframework.http.converter.HttpMessageConverter 是一个策略接口 接口说明如下: S ...

  9. mybatis开启字段自动映射为java驼峰命名规则

    <settings><setting name="mapUnderscoreToCamelCase" value="true"/>< ...

最新文章

  1. JSONObject 和 JSONArray 获取value 的方法
  2. 83篇文献-万字总结强化学习之路
  3. 理解离散傅立叶变换(一)
  4. VC中为对话框添加背景图片
  5. Spring MVC源码分析(一) 说明
  6. 问题记录:EntityFramework 一对一关系映射
  7. 100款违法违规APP下架整改:微店、更美等在列
  8. JPEG 及MJPEG开发笔记
  9. Java Architecture [JAVA的架构]
  10. [poj] 1235 Farm Tour || 最小费用最大流
  11. Struts2框架 下载和配置
  12. 计算机辅助汽车人机工程未来挑战,汽车人机工程学
  13. 自定义View来显示多条支付信息
  14. matplotlib plot函数使用详解
  15. VisualSVN Server的安装
  16. 创客学院知识巩固-01C语言回顾
  17. SaaS 公司如何切入大客户
  18. DokuWiki基本使用语法
  19. 自定义menu菜单布局
  20. 单片机开发---基于ESP32-CAM的人脸识别应用

热门文章

  1. 准备蓝桥杯--dyx--特殊的数字
  2. 加拿大 计算机 硕士 授课型,说真的!加拿大研究型硕士和授课型硕士的区别你知道吗?...
  3. 微商,本来是个很有创意的商业模式
  4. 【ML】第五章 支持向量机
  5. element-plus输入框显示图标
  6. Yota Phone宣告破产
  7. C++ 多线程:std::future
  8. parseInt参数解读
  9. 支持post的web服务器搭建,搭建Web服务器
  10. 问题三十五: 怎么用ray tracing画二次曲面(quadratic surfaces)(2)——单页双曲面、双页双曲面、椭圆锥面、椭圆柱面