千家信息网

SpringBoot jackson提供对LocalDate的支持方式是什么

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章的内容主要围绕SpringBoot jackson提供对LocalDate的支持方式是什么进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅
千家信息网最后更新 2025年01月19日SpringBoot jackson提供对LocalDate的支持方式是什么

这篇文章的内容主要围绕SpringBoot jackson提供对LocalDate的支持方式是什么进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!

jackson提供对LocalDate的支持

SpringBoot默认使用jackson来进行json格式转换,我们在配置文件中加入如下配置可以统一的改变Spring MVC返回值的日期格式类型

spring.jackson.date-format=yyyy-MM-ddspring.jackson.time-zone=GMT+8spring.jackson.serialization.write-dates-as-timestamps=false

但是这个配置对于java8新提供的日期APILocalDate、LocalDateTime等无效。

解决办法

引入依赖

      com.fasterxml.jackson.datatype      jackson-datatype-jsr310      2.8.9

启动主类添加如下代码

@SpringBootApplicationpublic class GroupApplication {    public static void main(String[] args) {        SpringApplication.run(GroupApplication.class, args);    }     /**     * 提供jackson对LocalDate等java8提供的日期的序列化支持     */     @Bean(name = "mapperObject")    public ObjectMapper getObjectMapper() {        ObjectMapper om = new ObjectMapper();        JavaTimeModule javaTimeModule = new JavaTimeModule();        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));        javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));        javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));        om.registerModule(javaTimeModule);        return om;    }}

使用Jackson格式化LocalDate对象

LocalDate可以很方便的对日期进行处理,但是在返回给前端时,展示为如下的JSON结构:

{    "dayOfWeek": "FRIDAY",    "month": "JANUARY",    "year": 2020,    "dayOfMonth": 3,    "era": "CE",    "dayOfYear": 3,    "monthValue": 1,    "chronology": {        "calendarType": "iso8601",        "id": "ISO"    }}

前端组件就很难处理了。接下来,我们需要将此属性反序列化并从JSON字符串序列化。为此,我们可以使用@JsonDeserialize和@JsonSerialize来注释该类的LocalDate属性,时期成为前端组件需要的String格式。

实现LocalDateDeserializer和LocalDateSerializer

下面是LocalDateSerializerand LocalDateDeserializer类的定义。

public class LocalDateDeserializer extends StdDeserializer {    protected LocalDateDeserializer() {        super(LocalDate.class);    }    @Override    public LocalDate deserialize(JsonParser parser, DeserializationContext context) throws IOException {        return LocalDate.parse(parser.readValueAs(String.class));    }}
public class LocalDateSerializer extends StdSerializer {    public LocalDateSerializer() {        super(LocalDate.class);    }    @Override    public void serialize(LocalDate value, JsonGenerator generator, SerializerProvider provider) throws IOException {        generator.writeString(value.format(DateTimeFormatter.ISO_LOCAL_DATE));    }}

实体类添加注解

实体类添加如下的注解

    @JsonDeserialize(using = LocalDateDeserializer.class)    @JsonSerialize(using = LocalDateSerializer.class)    private LocalDate date;

感谢你的阅读,相信你对"SpringBoot jackson提供对LocalDate的支持方式是什么"这一问题有一定的了解,快去动手实践吧,如果想了解更多相关知识点,可以关注网站!小编会继续为大家带来更好的文章!

支持 日期 格式 前端 序列 配置 方式 内容 实体 属性 文章 注解 篇文章 组件 处理 为此 接下来 代码 兴趣 办法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器自动配置失败 网络技术宣传的企业代码 怎么配置文件需要的数据库 数据库软件如何自动关闭 蛋白差异表达的数据库 数字化电力网络安全挑战 电脑服务器管理器在哪 请检查服务器是否已经正常启动 软件开发pa pm 网络安全专业大学排名100 三级数据库模式是什么意思 rad xe网络软件开发 北京众妙网络技术有限公司 浦东新区微型网络技术应用范围 北京人人彩网络技术有限公司 数据库的严谨性是什么 oa软件开发合同样本 网络安全都包括 长春企腾网络技术有限公司 网络安全二年级上册简单手抄报 服务器自动配置失败 张家港市乾邦网络技术 软件开发是开专票还是开普票 中小学家庭教网络安全感 软件开发企业怎么做账务 虚拟机为什么不能开启数据库 信息与网络安全信息通报 如何查看服务器redhat 购物网站的数据库设置 主时钟同步服务器地址
0