jackson中怎么自定义全局序列化、反序列化
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章将为大家详细讲解有关jackson中怎么自定义全局序列化、反序列化,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、创建序列化类创建一个序列化
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
geo数据库的图能不能直接用
sr158服务器无法开机
单位学习网络安全的意义
芜湖车载工控机服务器
服务器安全检测机构
黑魂3诸神之战服务器
山西360网络安全信息学院
和田网络技术哪家好
雅安的大数据库建在哪里
mc服务器服主和管理员
上海软件开发日语招聘
预防中小学生网络安全黑板报
打开数据库后无法读取
iis与服务器连接丢失
linux服务器内存大小
企业技术资料管理服务器
白夜极光选错服务器了怎么办
车载网络技术实训报告
国家网络安全宣传周几月举行
数据库神器
PR软件开发商的电话
国际音乐手稿数据库
hpdl120服务器更换风扇
数据库查询记录条数
人工智能在网络技术中的运用
服务器是怎么用的
宝山区软件开发创新服务
数据库文件的转移
网络安全与信息安全好的学校
网络安全人员考试名单