jackson中怎么自定义全局序列化、反序列化
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关jackson中怎么自定义全局序列化、反序列化,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、创建序列化类创建一个序列化
千家信息网最后更新 2026年11月03日jackson中怎么自定义全局序列化、反序列化
这篇文章将为大家详细讲解有关jackson中怎么自定义全局序列化、反序列化,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
一、创建序列化类
创建一个序列化类然后继承JsonSerializer,重写serialize序列化方法。其中第一个参数localDateTime为JsonSerializer的泛型,表示的是被序列化的类型的值,第二个参数jsonGenerator表示的是用于输出生成的Json内容,第三个参数暂时没明白什么应用场景。重写方法一般是将想要序列化的字符串传入 jsonGenerator.writeString。
public final class LocalDateTimeSerializer extends JsonSerializer{ public static final LocalDateTimeSerializer INSTANCE = new LocalDateTimeSerializer(); public LocalDateTimeSerializer() { } @Override public void serialize(LocalDateTime localDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeString(DateUtil.format(localDateTime, DateUtil.DateTimeFormatEnum.DATE_TIME_FORMAT_4)); }}
二、创建反序列化类
创建两个类,一个类继承JsonDeserializer,一个类继承KeyDeserializer,重写deserialize反序列化方法。参数jsonParser用于读取json内容的解析,deserializationContext可用于访问此有关反序列化的上下文(暂时也不知道怎么用),返回值则是JsonDeserializer的泛型对象,表示要反序列化的对象。一般用法是通过jsonParser.getText().trim()获取该字段json字符串,然后将该字符串转换为对象返回。
public final class LocalTimeDeserializer extends JsonDeserializer{ public static final LocalTimeDeserializer INSTANCE = new LocalTimeDeserializer(); public LocalTimeDeserializer() { } @Override public LocalTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { String text = jsonParser.getText().trim(); return LocalTime.parse(text, DateUtil.DATE_TIME_FORMATTER_6); }}
public final class LocalDateTimeKeyDeserializer extends KeyDeserializer { public static final LocalDateTimeKeyDeserializer INSTANCE = new LocalDateTimeKeyDeserializer(); public LocalDateTimeKeyDeserializer() { } @Override public Object deserializeKey(String s, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { return StringUtils.isBlank(s) ? null : LocalDateTime.parse(s, DateUtil.DATE_TIME_FORMATTER_4); }}三、将两个类注册进入jackson核心对象objectMapper
@Beanpublic ObjectMapper objectMapper(){ ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); //不注释,会导致swagger报错 //objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); //关闭日期序列化为时间戳的功能 objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); //关闭序列化的时候没有为属性找到getter方法,报错 objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); //关闭反序列化的时候,没有找到属性的setter报错 objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); //序列化的时候序列对象的所有属性 objectMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS); //反序列化的时候如果多了其他属性,不抛出异常 objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); //如果是空对象的时候,不抛异常 objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); SimpleModule simpleModule = new SimpleModule(); //json值序列化 simpleModule.addSerializer(LocalDateTime.class, LocalDateTimeSerializer.INSTANCE); //json值反序列化 simpleModule.addDeserializer(LocalDateTime.class, LocalDateTimeDeserializer.INSTANCE); //json键序列化 simpleModule.addKeySerializer(LocalDateTime.class,LocalDateTimeSerializer.INSTANCE); //json键反序列化 simpleModule.addKeyDeserializer(LocalDateTime.class, LocalDateTimeKeyDeserializer.INSTANCE); objectMapper.registerModule(simpleModule); return objectMapper; }关于jackson中怎么自定义全局序列化、反序列化就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
序列
对象
时候
内容
参数
属性
方法
字符
字符串
全局
两个
文章
更多
知识
篇文章
有关
不错
三个
上下
上下文
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海卓越科技互联网
互联网科技工作委员会主任
苏州找大状互联网科技有限公司
科技互联网公司装修
互联网中国科技
远信互联网科技
狮子座互联网科技有限公司
壹账通互联网科技
互联网科技缩写
苏州大垚互联网科技
互联网科技公司介绍
科技大学互联网专业好不好
湖南洣水互联网科技有限公司扣款
互联网科技实习生岗位职责
千方科技属于互联网企业吗
知域互联网科技有限公司大骗子
恒生互联网科技指数跳水
如何创新互联网科技
佛山市翊博互联网络科技有限公司
产业互联网科技服务公司
杭州互联网科技公司
天扬科技互联网广告
互联网科技创新企业排名
互联网经济与金融科技
互联网科技革命什么开始
群盈汇互联网科技有限公司
美国互联网科技实力
陕西云淼互联网科技公司
世界互联网科技成果奖
互联网科技自媒体灵感