springboot Jackson 指定序列化器(未写完) 作者:马育民 • 2023-11-20 19:33 • 阅读:10032 # 说明 springboot 使用 Jackson 实现序列化和反序列化 对于 **非 JavaBean** ,在序列化时,需要指定序列化器,才能达到想要的效果 ## 通过@JsonComponent(推荐) 在 `@JsonComponent` 注解所修饰的类里面添加继承 `JsonSerializer` 的内部类,spring就会自动帮助我们将定义的序列化类注册到jackson里去。 这个过程使用的仍然是Spring Boot自动配置web mvc,这样静态资源不会失效。推荐使用这种方式实现全局JSON序列化。 `@JsonComponent`注解 `value` 用来指定注册到Spring容器里的Bean Name,`type` 用来指定对哪些类进行了序列化或反序列化处理。scope指定对在作用范围。 ### Record 类 该类封装了一些数据: ``` class Record{ Map 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 { @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 原文出处:https://malaoshi.top/show_1IX6dSGI6ssW.html