SpringBoot怎么利用jackson格式化時(shí)間

這篇“SpringBoot怎么利用jackson格式化時(shí)間”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“SpringBoot怎么利用jackson格式化時(shí)間”文章吧。

創(chuàng)新互聯(lián)公司是一家專業(yè)提供新會(huì)企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為新會(huì)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

準(zhǔn)備工作

創(chuàng)建項(xiàng)目,添加依賴

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

創(chuàng)建實(shí)體類UserDTO

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

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

創(chuàng)建UserController

編寫控制層代碼

@RestController
public class UserController {
    @GetMapping("/getUser")
    public List<UserDTO> getUser() {
        List<UserDTO> userList = new ArrayList<UserDTO>();
        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;
    }
    
}

調(diào)用接口:http://localhost:8080/getUser

SpringBoot怎么利用jackson格式化時(shí)間

該結(jié)果很顯然不是我們所需要的,所以我們需要進(jìn)行時(shí)間格式化一下。而且還有時(shí)區(qū)問題,我當(dāng)前時(shí)間是晚上 22:44。

第一種 使用注解

在需要轉(zhuǎn)換的字段上增加 @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:需要轉(zhuǎn)換的時(shí)間日期的格式

timezone:時(shí)間設(shè)置為東八區(qū),避免時(shí)間在轉(zhuǎn)換中有誤差

調(diào)用接口:http://localhost:8080/getUser

SpringBoot怎么利用jackson格式化時(shí)間

完成,但是這種也有不好的地方,如果我有一百個(gè)實(shí)體中都有 Date類型,那就要在一百個(gè)實(shí)體加入注解。顯得有點(diǎn)麻煩。

第二種 修改默認(rèn)配置

所有的json生成都離不開相關(guān)的HttpMessageConverters

SpringBoot 默認(rèn)使用 jackson,并對(duì)其默認(rèn)做了配置。所以我們來修改一下。

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

SpringBoot怎么利用jackson格式化時(shí)間

該類中有個(gè)方法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);
}

注意該方法上有兩個(gè)注解,@Bean 注解就不在介紹了。介紹一下 ConditionalOnMissingBean注解。

@ConditionalOnMissingBean :當(dāng)給定的在bean不存在時(shí),則實(shí)例化當(dāng)前 Bean。

打個(gè)比喻:你入職報(bào)到,你公司看你帶了電腦,就讓你使用你自己的電腦,如果你沒帶電腦,就讓你使用公司的電腦。SpringBoot 也是這樣子做的,你不提供,就使用默認(rèn)的。

新建MyConfig

import java.text.SimpleDateFormat;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.fasterxml.jackson.databind.ObjectMapper;

@Configuration
public class MyConfig {

    @Bean
    MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverterConfiguration() {
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        ObjectMapper om = new ObjectMapper();
        //全局修改josn時(shí)間格式
        om.setDateFormat(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"));
        converter.setObjectMapper(om);
        return converter;
    }
}

提供了一個(gè) MappingJackson2HttpMessageConverter的 Bean ,所以Springboot就會(huì)使用我們所提供的。

將User實(shí)體的注解注釋

SpringBoot怎么利用jackson格式化時(shí)間

調(diào)用接口:http://localhost:8080/getUser

SpringBoot怎么利用jackson格式化時(shí)間

OK,這種方式也是可以的。

提供ObjectMapper

也可以提供一個(gè) ObjectMapper,將上述提供的 MappingJackson2HttpMessageConverter進(jìn)行注釋掉。

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

調(diào)用接口:http://localhost:8080/getUser

SpringBoot怎么利用jackson格式化時(shí)間

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

第三種 配置文件修改

在 application.yml或者properties中修改默認(rèn)配置

yml

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

properties

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

如果第二種方式和第三種方式配置同時(shí)存在,以第二種方式為主。

如果三種方式都存在的時(shí)候,以實(shí)體類中注解格式為主。

以上就是關(guān)于“SpringBoot怎么利用jackson格式化時(shí)間”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站標(biāo)題:SpringBoot怎么利用jackson格式化時(shí)間
分享URL:http://bm7419.com/article26/gipdjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、虛擬主機(jī)、網(wǎng)站收錄、移動(dòng)網(wǎng)站建設(shè)、小程序開發(fā)、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)