a1b2c3T
93 天前
在将 JSON 字符串转换为 Map 时,如果需要将 JSON 键的命名方式从驼峰命名法( Camel Case )转换为下划线命名法( Snake Case ),可以通过以下步骤实现:
方法一:手动转换
反序列化 JSON 字符串为 Map: 使用 Jackson 或 Gson 等库将 JSON 字符串反序列化为 Map 。
遍历 Map 并修改键名: 遍历 Map ,将每个键名从驼峰格式转换为下划线格式。
代码示例(使用 Jackson ):
java
复制代码
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;
public class CamelToSnake {
public static void main(String[] args) throws Exception {
String jsonString = "{\"userName\":\"JohnDoe\",\"userAge\":30}";
ObjectMapper objectMapper = new ObjectMapper();
// 反序列化 JSON 字符串为 Map
Map<String, Object> originalMap = objectMapper.readValue(jsonString, HashMap.class);
Map<String, Object> resultMap = new HashMap<>();
// 遍历 Map ,将驼峰转换为下划线格式
for (Map.Entry<String, Object> entry : originalMap.entrySet()) {
String snakeKey = camelToSnake(entry.getKey());
resultMap.put(snakeKey, entry.getValue());
}
// 输出转换后的 Map
System.out.println(resultMap);
}
// 将驼峰命名转为下划线命名
private static String camelToSnake(String camelCaseStr) {
StringBuilder result = new StringBuilder();
for (char c : camelCaseStr.toCharArray()) {
if (Character.isUpperCase(c)) {
result.append("_").append(Character.toLowerCase(c));
} else {
result.append(c);
}
}
return result.toString();
}
}
输出结果:
java
复制代码
{user_name=JohnDoe, user_age=30}
方法二:使用 Jackson 自定义策略
如果你希望自动将 JSON 中的字段从驼峰转换为下划线,可以使用 Jackson 的自定义命名策略来实现。
代码示例:
java
复制代码
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import java.util.Map;
public class JacksonCamelToSnake {
public static void main(String[] args) throws Exception {
String jsonString = "{\"userName\":\"JohnDoe\",\"userAge\":30}";
// 创建 ObjectMapper 并设置命名策略为下划线
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
// 反序列化 JSON 字符串为 Map
Map<String, Object> resultMap = objectMapper.readValue(jsonString, Map.class);
// 输出转换后的 Map
System.out.println(resultMap);
}
}
输出结果:
java
复制代码
{user_name=JohnDoe, user_age=30}
说明
方法一 适用于需要手动控制转换过程的场景,可以灵活处理不同的命名转换规则。
方法二 使用 Jackson 的内置命名策略,可以自动将驼峰格式转换为下划线格式,非常方便,适用于更大规模的项目。
两种方法可以根据你的需求选择合适的实现方式。