Java驼峰转换工具

1.字段转换

//导入依赖包
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>21.0</version>
</dependency>
import org.junit.Test;
import com.google.common.base.CaseFormat;
public class GuavaTester {
 
    @Test
    public void test() {
        System.out.println(CaseFormat.LOWER_HYPHEN.to(CaseFormat.LOWER_CAMEL, "test-data"));//testData
        System.out.println(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "test_data"));//testData
        System.out.println(CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, "test_data"));//TestData
 
        System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, "testdata"));//testdata
        System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, "TestData"));//test_data
        System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_HYPHEN, "testData"));//test-data
        System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, "testData"));//test_data
    }
}

2.将Map中的key由下划线转换为驼峰命名法


import org.apache.commons.beanutils.BeanUtils;

public class test{
	public static void main(String[] args){
	Map<String,Object> object1 = new HashMap<>();
	object1 .put("stu_name","张三");
	object1 .put("stu_addr","河北");
	Map<String,Object> object11 = formatHumpName(object1 );
	Stu stu1 = new stu();
	//导包注意
	BeanUtils.populate(stu1 ,object11 );
	System.out.println(stu1.getstuAddr());
	System.out.println(stu1.getstuName());

}
//实体类
@Data
public class Stu{
	private String stuName;
	private String stuAddr;

/**
	   * 将Map中的key由下划线转换为驼峰
	   *
	   * @param map
	   * @return
	   */
	  public static  Map<String, Object> formatHumpName(Map<String, Object> map) {
	    Map<String, Object> newMap = new HashMap<String, Object>();
	    Iterator<Map.Entry<String, Object>> it = map.entrySet().iterator();
	    while (it.hasNext()) {
	      Map.Entry<String, Object> entry = it.next();
	      String key = entry.getKey();
	      String newKey = toFormatCol(key);
	      newMap.put(newKey, entry.getValue());
	    }
	    return newMap;
	  }
 
	  public static String toFormatCol(String colName) {
	    StringBuilder sb = new StringBuilder();
	    String[] str = colName.toLowerCase().split("_");
	    int i = 0;
	    for (String s : str) {
	      if (s.length() == 1) {
	        s = s.toUpperCase();
	      }
	      i++;
	      if (i == 1) {
	        sb.append(s);
	        continue;
	      }
	      if (s.length() > 0) {
	        sb.append(s.substring(0, 1).toUpperCase());
	        sb.append(s.substring(1));
	      }
	    }
	    return sb.toString();
	  }

3.Json中key驼峰命名转蛇形命名(下划线)

原json串:
String json={“userName”:“tom1”,“age”:18,“address”:[{“province”:“上海市”},{“ciTy”:“上海市”},{“disrtict”:“静安区”}]}
转换为:
String json={“user_name”:“tom1”,“age”:18,“address”:[{“province”:“上海市”},{“ci_ty”:“上海市”},{“disrtict”:“静安区”}]}


    public static void main(String[] args) {
        String str = "{\"userName\":\"tom1\",\"age\":18,\"address\":[{\"province\":\"上海市\"},{\"ciTy\":\"上海市\"},{\"disrtict\":\"静安区\"}]}";
        JSONObject jsonObject = JSON.parseObject(str);
        humpToSnake(jsonObject);
        System.out.println(str);
        System.out.println(jsonObject.toString());
    }

    /**
     * 驼峰转蛇形 FastJson
     *
     * @param json {@link JSONObject} {@link JSONArray}
     */
    public static void humpToSnake(Object json) {
        // 如果是Json对象
        if (json instanceof JSONObject) {
            JSONObject jsonObject = (JSONObject) json;
            Set<String> tempKeys = new HashSet<>(jsonObject.keySet());
            for (String key : tempKeys) {
                Object value = jsonObject.get(key);
                StringBuilder stringBuilder = new StringBuilder();
                for (int i = 0; i < key.length(); i++) {
                    char c = key.charAt(i);
                    if (Character.isUpperCase(c) && i > 0) {
                        stringBuilder.append("_");
                        stringBuilder.append(Character.toLowerCase(c));
                    } else {
                        stringBuilder.append(c);
                    }
                }
                jsonObject.remove(key);
                jsonObject.put(stringBuilder.toString(), value);
                humpToSnake(value);
            }
        } else if (json instanceof JSONArray) {
            JSONArray jsonArray = (JSONArray) json;
            for (Object o : jsonArray) {
                humpToSnake(o);
            }
        }
    }

4.Json中key蛇形命名(下划线)转驼峰命名

原json串:
String json= “{‘user_name’:‘ok’,‘user_sex’:0,‘object_info’:{‘business_code’:‘0001’,‘business_info’:{‘business_name’:‘ok’}}}”;
转换为:
String json= “{‘userName’:‘ok’,‘userSex’:0,‘objectInfo’:{‘businessCode’:‘0001’,‘businessInfo’:{‘businessName’:‘ok’}}}”;

@Test
public void testconver() {
JsonUtils jsonUtils =new JsonUtils();
        String json= "{'user_name':'ok_ok','user_sex':0,'object_info':{'business_code':'0001','business_info':{'business_name':'ok'}}}";
        System.out.println("转换后数据:"+jsonUtils.convert(json));
        //jfinal框架返回格式的转换
        //System.out.println("list1:"+jsonUtils.convert(JSONArray.parse(JFinalJson.getJson().toJson(Db.find(sqltopm))).toString()));

}

public class JsonUtils {

    public final static void convert(Object json) {
        if (json instanceof JSONArray) {
            JSONArray arr = (JSONArray) json;
            for (Object obj : arr) {
                convert(obj);
            }
        } else if (json instanceof JSONObject) {
            JSONObject jo = (JSONObject) json;
            Set<String> keys = jo.keySet();
            String[] array = keys.toArray(new String[keys.size()]);
            for (String key : array) {
                Object value = jo.get(key);
                String[] key_strs = key.split("_");
                if (key_strs.length > 1) {
                    StringBuilder sb = new StringBuilder();
                    for (int i = 0; i < key_strs.length; i++) {
                        String ks = key_strs[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);
                                }
                            }
                        }
                    }
                    jo.remove(key);
                    jo.put(sb.toString(), value);
                }
                convert(value);
            }
        }
    }

    public final static Object convert(String json) {
        Object obj = JSON.parse(json);
        convert(obj);
        return obj;
    }
}
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟吶李唦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值