91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于@JSONField和@JsonFormat的使用區別有哪些

發布時間:2021-11-06 08:51:05 來源:億速云 閱讀:985 作者:iii 欄目:開發技術

這篇文章主要介紹“關于@JSONField和@JsonFormat的使用區別有哪些”,在日常操作中,相信很多人在關于@JSONField和@JsonFormat的使用區別有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”關于@JSONField和@JsonFormat的使用區別有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

@JSONField和@JsonFormat的區別

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

一、@JSONField的常用方式

1.1、name的用法:

實體類:

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;
}

測試類:

/**
     * @author xiaobu
     * @date 2018/12/5 16:53
     * @descprition  表明  json不區分大小寫都能轉換
     * @version 1.0
     * bean to JSON:{"role_desc":"admin","role_id":8}
     * 需要轉換的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("需要轉換的json:" + jsonStr);
        roles = JSONObject.toJavaObject(JSONObject.parseObject(jsonStr), Roles.class);
        System.out.println("RoleDesc:"+roles.getRoleDesc());
    }

1.2 format的用法:

實體類:

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

測試類:

@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") 必須加上時區。

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

這兩個的作用都是格式化日期時間。且只能作用在日期時間上。

補充:前臺傳后臺

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

@JsonFormat與@DateTimeFormat用法及注意事項

@JsonFormat

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

用于服務器傳給前端json數據時對Date類型時間進行的格式化

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

pattern就表示需要轉變的格式,timezone表示處在的時區(國內是東八區)

因為,jackson在序列化時間時是按照國際標準時間GMT進行格式化的,而在國內默認時區使用的是CST時區,兩者相差8小時

如果沒有用@JsonFormat 對時間進行格式化,返回給前端的將是一個時間戳。如圖所示。

關于@JSONField和@JsonFormat的使用區別有哪些

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

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

關于@JSONField和@JsonFormat的使用區別有哪些

注意事項

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

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

@DateTimeFormat

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

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

關于@JSONField和@JsonFormat的使用區別有哪些

可以使用@DateTimeFormat將客戶端發送過來的時間參數轉換成想要的類型

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

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

這樣

關于@JSONField和@JsonFormat的使用區別有哪些

服務端就可以正確接收,打印的時間參數為

Mon Apr 01 16:26:25 CST 2019

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

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

一些特殊情況

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

關于@JSONField和@JsonFormat的使用區別有哪些

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

這樣也能正確接收到,但是會將時分秒全部置為00

Mon Apr 01 00:00:00 CST 2019

如果使用pattern = "yyyy-MM-dd HH:mm:ss"接收客戶端傳來的沒有時分秒的參數

關于@JSONField和@JsonFormat的使用區別有哪些

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

會報400異常!

到此,關于“關于@JSONField和@JsonFormat的使用區別有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金阳县| 包头市| 上饶县| 邹平县| 新闻| 聊城市| 东阳市| 法库县| 朝阳区| 田林县| 庆安县| 育儿| 郑州市| 南和县| 建阳市| 东莞市| 大同市| 林口县| 云浮市| 丰都县| 贵定县| 泊头市| 东乌珠穆沁旗| 滨州市| 光山县| 长沙县| 仁寿县| 巨野县| 商都县| 河东区| 永川市| 三门峡市| 彩票| 东明县| 资讯| 渭南市| 长兴县| 汾阳市| 罗定市| 太仆寺旗| 眉山市|