最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于@JSONField和@JsonFormat的使用區(qū)別說(shuō)明

 更新時(shí)間:2021年11月05日 16:55:00   作者:小布1994  
這篇文章主要介紹了關(guān)于@JSONField 和 @JsonFormat的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@JSONField和@JsonFormat的區(qū)別

@JSONField是阿里巴巴下fastjson下的,@JsonFormat是jackson下面的。

一、@JSONField的常用方式

1.1、name的用法:

實(shí)體類:

package com.xiaobu.entity; 
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data; 
import javax.persistence.*;
import java.io.Serializable;
 
/**
 * @author xiaobu
 * @version JDK1.8.0_171
 * @date on  2018/12/4 19:00
 * @description V1.0
 */
@Data
public class Roles implements Serializable {
    private static final long serialVersionUID = 5775171105018867238L;
 
    @JSONField(name = "role_id")
    @Column(name = "RoleId")
    private Integer RoleId;
 
    @JSONField(name = "role_desc")
    @Column(name = "RoleDesc")
    private String RoleDesc;
}

測(cè)試類:

/**
     * @author xiaobu
     * @date 2018/12/5 16:53
     * @descprition  表明  json不區(qū)分大小寫都能轉(zhuǎn)換
     * @version 1.0
     * bean to JSON:{"role_desc":"admin","role_id":8}
     * 需要轉(zhuǎn)換的json:{"ROLE_DESC":"ADMIN","ROLE_ID":8}
     * RoleDesc:ADMIN
     */
    @Test
    public void testJSONField(){
        Roles roles = new Roles();
        roles.setRoleDesc("admin");
        roles.setRoleId(8);
        String jsonStr=JSONObject.toJSONString(roles);
        System.out.println("bean to JSON:"+jsonStr);
        //改變json的key為大寫
        jsonStr = jsonStr.toUpperCase();
        System.out.println("需要轉(zhuǎn)換的json:" + jsonStr);
        roles = JSONObject.toJavaObject(JSONObject.parseObject(jsonStr), Roles.class);
        System.out.println("RoleDesc:"+roles.getRoleDesc());
    }

1.2 format的用法:

實(shí)體類:

 /**
     * 任務(wù)接收時(shí)間
     */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd")
    @Column(name="TaskAcceptTime")
    private Date TaskAcceptTime;
 
    /**
     *任務(wù)完成時(shí)間
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd")
    @Column(name="TaskCompleteTime")
    private Date TaskCompleteTime;

測(cè)試類:

@Test
    public void findByExample() {
        Task task = new Task();
        task.setTaskId("HYR08274-0804");
        Example example = new Example(Task.class);
        Example.Criteria criteria = example.createCriteria();
        if (StringUtils.isNotBlank(task.getTaskId())) {
            criteria.andLike("TaskId", "%" + task.getTaskId() + "%");
        }
        //TaskAcceptTime=Mon Aug 04 00:00:00 CST 2008,TaskCompleteTime=Fri Nov 07 00:00:00 CST 2008
        List<Task> tasks = taskMapper.selectByExample(example);
        System.out.println(tasks);
        //""taskAcceptTime":"2008-08-04","taskCompleteTime":"2008-11-07"
        String fastJsonStr = JSON.toJSONString(tasks);
        System.out.println("fastJsonStr = " + fastJsonStr);
        ObjectMapper MAPPER = new ObjectMapper();
        try {
            //""TaskAcceptTime":"2008-08-04","TaskCompleteTime":"2008-11-07 00:00:00"
            String ujosn = MAPPER.writeValueAsString(tasks);
            System.out.println("ujosn = " + ujosn);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        } 
    }

@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") 必須加上時(shí)區(qū)。

@JSONField(format = "yyyy-MM-dd")

這兩個(gè)的作用都是格式化日期時(shí)間。且只能作用在日期時(shí)間上。

補(bǔ)充:前臺(tái)傳后臺(tái)

@DateTimeFormat(pattern="yyyy-MM-dd") 

@JsonFormat與@DateTimeFormat用法及注意事項(xiàng)

@JsonFormat

@JsonFormat ,使用該注解前需要添加 jackson 相關(guān)的依賴包

用于服務(wù)器傳給前端json數(shù)據(jù)時(shí)對(duì)Date類型時(shí)間進(jìn)行的格式化

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

pattern就表示需要轉(zhuǎn)變的格式,timezone表示處在的時(shí)區(qū)(國(guó)內(nèi)是東八區(qū))

因?yàn)?,jackson在序列化時(shí)間時(shí)是按照國(guó)際標(biāo)準(zhǔn)時(shí)間GMT進(jìn)行格式化的,而在國(guó)內(nèi)默認(rèn)時(shí)區(qū)使用的是CST時(shí)區(qū),兩者相差8小時(shí)

如果沒有用@JsonFormat 對(duì)時(shí)間進(jìn)行格式化,返回給前端的將是一個(gè)時(shí)間戳。如圖所示。

在這里插入圖片描述

使用了@JsonFormat之后,時(shí)間格式正確顯示。如圖所示。

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

在這里插入圖片描述

注意事項(xiàng)

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

pattern中定義的格式的大小寫要注意,不要寫錯(cuò)。。。

@DateTimeFormat

@DateTimeFormat是spring的注解,spring工程下不在需要額外引入其他依賴

由于客戶端傳給服務(wù)端的時(shí)間參數(shù)是字符串類型,如果直接使用java.util.Date下的Date接受的話,會(huì)報(bào)400的異常(400異常表示服務(wù)器不處理該請(qǐng)求,多半是傳入的參數(shù)問題)

在這里插入圖片描述

可以使用@DateTimeFormat將客戶端發(fā)送過來(lái)的時(shí)間參數(shù)轉(zhuǎn)換成想要的類型

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

pattern定義需要轉(zhuǎn)換的格式(跟前面一樣。大小寫需要嚴(yán)格定義)

這樣

在這里插入圖片描述

服務(wù)端就可以正確接收,打印的時(shí)間參數(shù)為

Mon Apr 01 16:26:25 CST 2019

注意:@JsonFormat與@DateTimeFormat只是定義時(shí)間參數(shù)在客戶端和服務(wù)端之間轉(zhuǎn)換格式,控制臺(tái)、Debug顯示的還是java.util.Date下的Date類型形式,如果想要轉(zhuǎn)換的話可以自己使用SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

一些特殊情況

如果使用pattern = "yyyy-MM-dd"接收上述客戶端的參數(shù)

在這里插入圖片描述

@DateTimeFormat(pattern = "yyyy-MM-dd")

這樣也能正確接收到,但是會(huì)將時(shí)分秒全部置為00

Mon Apr 01 00:00:00 CST 2019

如果使用pattern = "yyyy-MM-dd HH:mm:ss"接收客戶端傳來(lái)的沒有時(shí)分秒的參數(shù)

在這里插入圖片描述

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

會(huì)報(bào)400異常!

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • swagger文檔增強(qiáng)工具knife4j使用圖文詳解

    swagger文檔增強(qiáng)工具knife4j使用圖文詳解

    這篇文章主要介紹了swagger文檔增強(qiáng)工具knife4j使用詳解,想要使用knife4j非常簡(jiǎn)單,只要在Springboot項(xiàng)目中引入knife4j的依賴即可,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • SpringBoot集成JWT的工具類與攔截器實(shí)現(xiàn)方式

    SpringBoot集成JWT的工具類與攔截器實(shí)現(xiàn)方式

    這篇文章主要介紹了SpringBoot集成JWT的工具類與攔截器實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • java中@EnableAutoConfiguration注解使用

    java中@EnableAutoConfiguration注解使用

    在Spring Boot框架中,@EnableAutoConfiguration是一種非常重要的注解,本文就來(lái)介紹一下java中@EnableAutoConfiguration注解使用,感興趣的可以了解一下
    2023-11-11
  • Java?OpenCV圖像處理之SIFT角點(diǎn)檢測(cè)詳解

    Java?OpenCV圖像處理之SIFT角點(diǎn)檢測(cè)詳解

    SIFT,即尺度不變特征變換,是用于圖像處理領(lǐng)域的一種描述。這種描述具有尺度不變性,可在圖像中檢測(cè)出關(guān)鍵點(diǎn),是一種局部特征描述子。本文將詳細(xì)介紹一下Java?OpenCV圖像處理中的SIFT角點(diǎn)檢測(cè),需要的可以參考一下
    2022-02-02
  • Java多線程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解

    Java多線程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解

    Java的synchronized關(guān)鍵字用于修飾線程同步,用以線程資源共享的目的等,下面就帶來(lái)簡(jiǎn)單的Java多線程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解
    2016-06-06
  • Java仿12306圖片驗(yàn)證碼

    Java仿12306圖片驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了Java仿12306的圖片驗(yàn)證碼的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-04-04
  • Java注解處理器簡(jiǎn)單實(shí)例

    Java注解處理器簡(jiǎn)單實(shí)例

    這篇文章主要介紹了Java注解處理器簡(jiǎn)單實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Java+opencv3.2.0之scharr濾波器

    Java+opencv3.2.0之scharr濾波器

    這篇文章主要為大家詳細(xì)介紹了Java+opencv3.2.0之scharr濾波器的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • HashMap每次擴(kuò)容為什么是2倍

    HashMap每次擴(kuò)容為什么是2倍

    當(dāng)HashMap在初始化沒有指定容量的情況下,首次添加元素時(shí),數(shù)組的容量為16;當(dāng)超出閾值,數(shù)組容量為擴(kuò)容為之前的2倍,為什么HashMap每次擴(kuò)容都是之前的2倍?下面就介紹一下
    2024-11-11
  • 深入淺析springsecurity入門登錄授權(quán)

    深入淺析springsecurity入門登錄授權(quán)

    SpringSecurity為我們提供了基于注解的權(quán)限控制方案,這也是我們項(xiàng)目中主要采用的方式,我們可以使用注解去指定訪問對(duì)應(yīng)的資源所需的權(quán)限,這篇文章主要介紹了springsecurity入門登錄授權(quán),需要的朋友可以參考下
    2024-05-05

最新評(píng)論

安岳县| 永和县| 志丹县| 万荣县| 怀仁县| 改则县| 延吉市| 平泉县| 桃江县| 沽源县| 攀枝花市| 高安市| 井陉县| 乐安县| 神木县| 来安县| 长葛市| 望谟县| 宝兴县| 都昌县| 利津县| 成都市| 弥渡县| 邓州市| 高密市| 黑山县| 琼中| 鹤岗市| 望都县| 海兴县| 静宁县| 拜城县| 桓台县| 苍南县| 文安县| 高州市| 保定市| 东平县| 上蔡县| 宁陕县| 明星|