千家信息网

SpringBoot怎么利用jackson格式化时间

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇"SpringBoot怎么利用jackson格式化时间"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面
千家信息网最后更新 2025年01月18日SpringBoot怎么利用jackson格式化时间

这篇"SpringBoot怎么利用jackson格式化时间"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"SpringBoot怎么利用jackson格式化时间"文章吧。

准备工作

创建项目,添加依赖

        org.springframework.boot        spring-boot-starter-web

创建实体类UserDTO

添加属性,get、set方法省略。

private String id;private String username;private Date createTime;

创建UserController

编写控制层代码

@RestControllerpublic class UserController {    @GetMapping("/getUser")    public List getUser() {        List userList = new ArrayList();        for (int i=1; i<=3; i++) {            UserDTO user = new UserDTO();            user.setCreateTime(new Date());            user.setUsername("gongj" + i);            user.setId("j" + i);            userList.add(user);        }        return userList;    }    }

调用接口:http://localhost:8080/getUser

该结果很显然不是我们所需要的,所以我们需要进行时间格式化一下。而且还有时区问题,我当前时间是晚上 22:44。

第一种 使用注解

在需要转换的字段上增加 @JsonFormat注解,该注解是 jackson的,web 包集成了。

import com.fasterxml.jackson.annotation.JsonFormat;private String id;private String username; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")private Date createTime;

pattern:需要转换的时间日期的格式

timezone:时间设置为东八区,避免时间在转换中有误差

调用接口:http://localhost:8080/getUser

完成,但是这种也有不好的地方,如果我有一百个实体中都有 Date类型,那就要在一百个实体加入注解。显得有点麻烦。

第二种 修改默认配置

所有的json生成都离不开相关的HttpMessageConverters

SpringBoot 默认使用 jackson,并对其默认做了配置。所以我们来修改一下。

全局搜索 JacksonHttpMessageConvertersConfiguration。idea快捷键:Ctrl + shift + r

该类中有个方法mappingJackson2HttpMessageConverter 就是用来处理json的。

@Bean@ConditionalOnMissingBean(        value = {MappingJackson2HttpMessageConverter.class},        ignoredType = {"org.springframework.hateoas.server.mvc.TypeConstrainedMappingJackson2HttpMessageConverter", "org.springframework.data.rest.webmvc.alps.AlpsJsonHttpMessageConverter"})MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(ObjectMapper objectMapper) {        return new MappingJackson2HttpMessageConverter(objectMapper);}

注意该方法上有两个注解,@Bean 注解就不在介绍了。介绍一下 ConditionalOnMissingBean注解。

@ConditionalOnMissingBean :当给定的在bean不存在时,则实例化当前 Bean。

打个比喻:你入职报到,你公司看你带了电脑,就让你使用你自己的电脑,如果你没带电脑,就让你使用公司的电脑。SpringBoot 也是这样子做的,你不提供,就使用默认的。

新建MyConfig

import java.text.SimpleDateFormat;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.fasterxml.jackson.databind.ObjectMapper;@Configurationpublic class MyConfig {    @Bean    MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverterConfiguration() {        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();        ObjectMapper om = new ObjectMapper();        //全局修改josn时间格式        om.setDateFormat(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"));        converter.setObjectMapper(om);        return converter;    }}

提供了一个 MappingJackson2HttpMessageConverter的 Bean ,所以Springboot就会使用我们所提供的。

将User实体的注解注释

调用接口:http://localhost:8080/getUser

OK,这种方式也是可以的。

提供ObjectMapper

也可以提供一个 ObjectMapper,将上述提供的 MappingJackson2HttpMessageConverter进行注释掉。

import java.text.SimpleDateFormat;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.fasterxml.jackson.databind.ObjectMapper;@BeanObjectMapper objectMapper() {        ObjectMapper om = new ObjectMapper();        om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));        return om;}

调用接口:http://localhost:8080/getUser

注意:上述两种方法都是全局修改的哦!

第三种 配置文件修改

在 application.yml或者properties中修改默认配置

yml

spring:   jackson:     date-format: yyyy/MM/dd    timezone: GMT+8

properties

spring.jackson.date-format=yyyy-MM-dd HH:mmspring.jackson.time-zone=GMT+8

如果第二种方式和第三种方式配置同时存在,以第二种方式为主。

如果三种方式都存在的时候,以实体类中注解格式为主。

以上就是关于"SpringBoot怎么利用jackson格式化时间"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

注解 时间 格式 内容 实体 方式 配置 接口 方法 全局 电脑 公司 就是 文章 注释 知识 篇文章 不好 两个 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 如何搜索工信部数据库 自动化测试如何测试数据库数据 金蝶费用发票数据库表 哪招软件开发 服务器驱动程序在哪个文件夹 易语言客户端远程连接服务器 牡丹江天气预报软件开发 his软件开发需要多少钱 网络技术面试评语怎么写 数据库表一定有联系吗 网络安全风险评估报告文章 江苏数据库空投箱现货 安贞街道国家网络安全中心 租用的云服务器能修改dns吗 华为服务器进入系统时键盘不能用 服务器管理器 仪表板 讲解 软件开发技术部目标责任书 天津市网络安全责任制文件 海南行业专业软件开发 网络安全工作十分重要 小学二年级网络安全小提示 软件开发功能需求文档 重庆市电信网络安全宣传周 民游(上海)网络技术 计算机网络技术教学成绩 数据库logo 重庆惠普服务器续保 xpnt服务器怎么设置 烟台商诚网络技术有限公司 代理服务器有问题无法连接网络
0