package com.kinggod.test;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.PropertyNamingStrategy;
import com.alibaba.fastjson.serializer.SerializeConfig;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
Map<String, String> humpMap = new HashMap<>();
humpMap.put("firstTitle", "这是一个有趣的故事");
humpMap.put("mainContent", "故事很有趣就不细说了");
// 驼峰转下划线
System.out.println("驼峰转下划线[humpToUnderline]: " + humpToUnderline(humpMap.toString()));
System.out.println("驼峰转下划线[fastjson]: " + humpToUnderlineForJSONStr(humpMap));
Map<String, String> underlineMap = new HashMap<>();
underlineMap.put("two_title", "这是一个完美的故事");
underlineMap.put("main_content", "故事很完美就不细说了");
// 下划线转驼峰
System.out.println("下划线转驼峰[underlineToHump]: " + underlineToHump(underlineMap.toString()));
}
/**
* 驼峰转为下划线
*
* @param str
* @return
*/
public static String humpToUnderline(String str) {
StringBuffer sb = new StringBuffer();
if (StringUtil.isNotEmpty(str)) {
Matcher matcher = Pattern.compile("[A-Z]").matcher(str);
while (matcher.find()) {
matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
}
matcher.appendTail(sb);
}
return sb.toString();
}
/**
* 下划线转为驼峰
*
* @param str
* @return
*/
public static String underlineToHump(String str) {
StringBuffer sb = new StringBuffer();
if (StringUtil.isNotEmpty(str)) {
str = str.toLowerCase();
Matcher matcher = Pattern.compile("_[a-z]").matcher(str);
while (matcher.find()) {
matcher.appendReplacement(sb, matcher.group(0).toUpperCase().replace("_", ""));
}
matcher.appendTail(sb);
}
return sb.toString();
}
/**
* 采用com.alibaba.fastjson
* 把对象转换成 jsonstr
*
* @param obj
* @return
*/
public static String humpToUnderlineForJSONStr(Object obj) {
String jsonStr = null;
if (null != obj) {
//序列化配置,定义将实体中的驼峰命名转化为下划线
SerializeConfig config = new SerializeConfig();
config.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;
jsonStr = JSON.toJSONString(obj, config);
}
return jsonStr;
}
}
如果采用fastjson,需要引入:
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>2.0.20</version> </dependency>