自定义 Jackson 序列化、反序列化,支持 Java 8 日期新特性

自定义 Jackson 序列化、反序列化,支持 Java 8 日期新特性

ava 8 中,引入了新的时间和日期 API,相比较老旧的 Date , 它使用起来更加便捷,用过的都懂。自定义 Spring Boot 内置的 JSON 框架 Jackson,让出入参支持序列化、反序列化 Java 8 中新的日期 API : LocalDateTimeLocalDateLocalTime

默认情况下

Spring Boot默认已经为你配置了一个合理的ObjectMapper实例。Spring Boot通过自动配置机制(Auto-configuration)来提供一个预配置好的ObjectMapper,通常情况下已经足够满足大多数应用的需求。对于许多普通的Web应用来说,Spring Boot提供的默认配置已经足够满足需求,因此你可能并没有感觉到需要额外配置Jackson。Spring Boot会自动装配一个预配置的ObjectMapper到你的应用中,你可以直接注入并使用。

自定义 Jackson 配置类

@Configuration
public class JacksonConfig {@Beanpublic ObjectMapper objectMapper() {// 初始化一个 ObjectMapper 对象,用于自定义 Jackson 的行为ObjectMapper objectMapper = new ObjectMapper();// 忽略未知字段(前端有传入某个字段,但是后端未定义接受该字段值,则一律忽略掉)objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);// JavaTimeModule 用于指定序列化和反序列化规则JavaTimeModule javaTimeModule = new JavaTimeModule();// 支持 LocalDateTime、LocalDate、LocalTimejavaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));objectMapper.registerModule(javaTimeModule);// 设置时区objectMapper.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));// 设置凡是为 null 的字段,返参中均不返回,请根据项目组约定是否开启// objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);return objectMapper;}
}

上述代码中,我们定义了一个 ObjectMapper Bean,它用于自定义 Jackson 的行为,然后,通过 JavaTimeModule 添加了 LocalDateTime、LocalDate、LocalTime 的序列化、反序列化规则,搞定这些后,再设置时区、以及序列化中是否包含值为 null 的字段

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/58452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工程项目智能化管理平台,SpringBoot框架智慧工地源码,实现工程建设施工可视化、智能化的全过程闭环管理。

智慧工地管理系统的建设以“1个可扩展性平台2个应用端3方数据融合N个智能设备”为原则。以“智、保、安、全”为导向,与工程建设管理信息系统、综合安防平台深度集成,构建统一的标准化工地平台,实现现场人员、车辆、项目、安全、进度等方面的…

Django ORM 数据库管理 提高查询、更新性能的技巧和编程习惯:

在Django中使用ORM进行数据库管理时,以下是一些提高数据查询、更新和插入效率的技巧和编程习惯: 1. 索引优化 - 效果最显而易见 为常用的查询字段(如外键、唯一字段等)添加数据库索引,可以显著提高查询速度。 class…

springboot 自定义错误页面

自定义错误页面 背景:当我们访问应用程序不存在的接口路径或者参数传递不规范时,springboot 默认提示 如下页面 该页面对用户不友好,我们可以自定义展示错误页来改善。 优化后的简洁效果,可对 html 页面进一步美化,…

深入浅出ES6 Promise

写在前面 在现代前端开发中,异步编程是不可或缺的一部分。随着JavaScript应用变得越来越复杂,需要一种更好的方式来处理异步操作和回调。ECMAScript 6(ES6)引入了Promises,它提供了一种强大的方法来处理异步操作。本文…

SpringBoot 集成RabbitMQ 实现钉钉日报定时发送功能

文章目录 一、RabbitMq 下载安装二、开发步骤:1.MAVEN 配置2. RabbitMqConfig 配置3. RabbitMqUtil 工具类4. DailyDelaySendConsumer 消费者监听5. 测试延迟发送 一、RabbitMq 下载安装 官网:https://www.rabbitmq.com/docs 二、开发步骤:…

低代码统一待办:提升任务管理效率的新模式

低代码平台的魔力 低代码平台通过图形化用户界面和简化开发流程,让用户无需具备深厚的编程知识也能快速构建应用程序。这种技术不仅加速了应用开发速度,还大幅降低了开发成本和复杂度,适合各种规模的企业。 构建统一待办系统的优势 集中化管…

itertools模块的combinations很牛

在 Python 中,combinations 是 itertools 模块提供的一个非常有用的函数,用于生成给定序列的所有可能的组合(不考虑顺序)。combinations 函数可以生成从长度为 r 的所有子集,其中 r 是一个指定的正整数,表示…

React中管理state的方式

使用useState 使用useReducer 既然已经有了useState,为什么还需要useReducer呢? 那么useReducer是如何将解决这些问题的呢? reducer是如何更新state的呢? reducer的工作方式非常类似JavaScript中的reduce方法,随着时…

CSS网页布局综合练习(涵盖大多CSS知识点)

该综合练习就是为这个学校静态网页设置CSS样式&#xff0c;使其变成下面的模样 其基本骨架代码为&#xff1a; <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content…

BERT,RoBERTa,Ernie的理解

BERT&#xff1a; 全称&#xff1a;Bidirectional Encoder Representations from Transformers。可以理解为 “基于 Transformer 的双向编码器表示”。含义&#xff1a;是一种用于语言表征的预训练模型。它改变了以往传统单向语言模型预训练的方式&#xff0c;能够联合左侧和右…

放大器的保护机制

在工作中&#xff0c;使用功率放大器或高压放大器这类精密仪器时&#xff0c;为了保护设备不受伤害&#xff0c;确保设备的稳定性和安全性&#xff0c;在设备上需要设置保护机制。保护机制起着至关重要的作用&#xff0c;可以防止设备因过流、过压、过热等因素而受损。放大器的…

JavaSE笔记4】API、包、String类、Object类

目录 一、API 二、包 2.导入不同包下的同名程序 三、String 1. String类是什么&#xff1f; 2. 如何创建String对象?(常用的四种方法&#xff09; 3. String API a. 遍历字符串 b. 判断字符串内容是否相等&#xff1a; c. 截取子串 d. 替换部分内容 e. 匹配子串 f. 匹配开头字…

「C/C++」C/C++ 之 判断语句

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

AES_ECB算法C++与Java相互加解密Demo

一、AES算法 AES是一种对称加密算法&#xff0c;算法秘钥长度可为128位(16字节)、192位(24字节)、256位(32字节)。加密模式分为ECB、CBC、CTR等&#xff0c;其中ECB模式最简单够用。现给出ECB模式下C和Java的实现&#xff0c;并且可以相互加解密验证。 二、AES_ECB实现DEMO …

webRTC搭建:STUN 和 TURN 服务器 链接google的有点慢,是不是可以自己搭建

如果使用 Google 提供的 STUN/TURN 服务器速度较慢&#xff0c;你完全可以自己搭建 STUN 和 TURN 服务器。这有助于提升网络连接速度和稳定性&#xff0c;特别是在需要穿透 NAT 或防火墙的网络环境下。 下面是如何自己搭建 STUN 和 TURN 服务器的具体步骤&#xff1a; 1. 选择…

nrm的使用

在安装nrm之前&#xff0c;要先完成node.js的安装。 1、nrm的介绍 ‌nrm&#xff08;npm registry manager&#xff09;是一个npm源管理器&#xff0c;允许用户在不同npm源之间快速切换。 关于npm和nvm的介绍&#xff0c;详见文章nvm的使用-CSDN博客。 解释&#xff1a;比如…

芯片上音频相关的验证

通常芯片设计公司&#xff08;比如QUALCOMM&#xff09;把芯片设计好后交由芯片制造商&#xff08;比如台积电&#xff09;去生产&#xff0c;俗称流片。芯片设计公司由ASIC部门负责设计芯片。ASIC设计的芯片只有经过充分的验证&#xff08;这里说的验证是FPGA&#xff08;现场…

SpringBoot最常用的注解

1、RestController 作用&#xff1a;与Controller类似&#xff0c;但是RestController会自动将返回值转换为JSON格式。 2、RequestMapping 作用&#xff1a;用于映射请求URL和处理方法。 RequestMapping是Spring MVC框架中的一个核心注解&#xff0c;它用于映射HTTP请求和控…

【论文分享】通过太阳轨迹和街景图像测量不同街道网络方向的太阳辐射及其时空分布

本次我们给大家带来一篇SCI论文的全文翻译。该论文利用街景数据和太阳轨迹模拟技术&#xff0c;揭示了不同方向街道上的太阳辐射在时空上的差异&#xff0c;为城市的可持续发展提供了更有针对性的策略。 【论文题目】 Measuring solar radiation and spatio-temporal distrib…

彩色圆形检测函数不使用OpenCV——C语言代码

1. 基于RGB颜色空间检测BMP图像中的红色和绿色圆形 以检测红色和绿色为例,标准的红色满足R=255,G=0,B为0,标准的绿色满足R=0,G=255,B为0,但实际拍摄的图像会存在偏差,此外,不同的红色/绿色有不同的R G B值,为了检测出所有的彩色圆形,将所有红色/绿色合计,取极限值…