springboot Jackson 指定序列化器(未写完)

说明

springboot 使用 Jackson 实现序列化和反序列化

对于 非 JavaBean ,在序列化时,需要指定序列化器,才能达到想要的效果

通过@JsonComponent(推荐)

在 @JsonComponent 注解所修饰的类里面添加继承 JsonSerializer 的内部类,spring就会自动帮助我们将定义的序列化类注册到jackson里去。

这个过程使用的仍然是Spring Boot自动配置web mvc,这样静态资源不会失效。推荐使用这种方式实现全局JSON序列化。

@JsonComponent注解 value 用来指定注册到Spring容器里的Bean Name,type 用来指定对哪些类进行了序列化或反序列化处理。scope指定对在作用范围。

Record 类

该类封装了一些数据:

class Record{

    Map<String,Object> data = new HashMap();

    public Record(){

        data.put("name","李雷");
        data.put("age",20);

    }
}
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.springframework.boot.jackson.JsonComponent;
import top.malaoshi.jdbc.Record;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// 对 Record 类进行序列化处理
@JsonComponent(type = Record.class )
public class RecordSerializer {

    public static class CurrCodeJsonSerializer extends JsonSerializer<Record> {

        @Override
        public void serialize(Record record, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
            // 对 Record 对象进行序列化时,将 Record 的内部数据取出,并放入到 map 中
            Map map = new HashMap();
            for(String column : record.columns) {
                map.put(column,record.getValue(column));
            }
            jsonGenerator.writeObject(map);
        }
    }
}

感谢:
https://blog.csdn.net/NestorBian/article/details/103227896


原文出处:/show_1IX6dSGI6ssW.html