Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

java 对象转蛇形命名法(snake case)形式的 map

Java 笔记 Java 笔记


java 对象(object),一般是 pojo 对象想要转换成蛇形命名法(snake case)形式的 map 映射形式,主要有两种方式,一种基于阿里(alibaba)开源的 fastjson 库,另一个也可以用 json 工具 jackson 库。

基于 fastjson 库的实现

定义一个封装工具类 JSONUtil,底层调用 fastjson 库的 JSON.toJSON 静态方法,序列化配置指定 SERIALIZE_CONFIG_SNAKE_CASE,具体如下:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.PropertyNamingStrategy;
import com.alibaba.fastjson.serializer.SerializeConfig;


public class JSONUtil {

    public static final SerializeConfig SERIALIZE_CONFIG_SNAKE_CASE = new SerializeConfig();

    public static Object toJSONWithSnakeCase(Object javaObject) {
        return JSON.toJSON(javaObject, SERIALIZE_CONFIG_SNAKE_CASE);
    }

    static {
        SERIALIZE_CONFIG_SNAKE_CASE.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;
    }
}

基于 jackson 库的实现

需要导入 jackson 相关的两个库,以 maven 示例如下:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.10.0</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.10.0</version>
</dependency>

也封装一个 JSONUtil 工具类,代码如下: 

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;

import java.util.HashMap;
import java.util.Map;


public class JSONUtil {

    public static Object toJSONWithSnakeCase(Object javaObject) {
        ObjectMapper mapper = new ObjectMapper();
        mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
        Map<String, Object> map = mapper.convertValue(javaObject, HashMap.class);
        return map;
    }

}