1. 程式人生 > 程式設計 >springboot 如何使用jackson來處理實體類

springboot 如何使用jackson來處理實體類

目錄
  • 使用jackson來處理實體類
    • 1、常用框架:阿里faston,谷歌gson等
    • 2、在現在的開發中,會有很多呼叫介面的情況
  • Springboot Jackson的操作
    • 這裡寫了一個簡單的小demo記錄一下

使用jackson來處理實體類

1、常用框架:阿里fastjson,谷歌gson等

在大量資料情況下對比效能:

Jackson > fastjson > Gson > Json-lib。

2、在現在的開發中,會有很多呼叫介面的情況

比如前後臺分離採用json格式,或者呼叫第三方API等。

小編就以User為例,來講幾個例子:

實體類

springboot 如何使用jackson來處理實體類

user實體

springboot 如何使用jackson來處理實體類

controller

springboot 如何使用jackson來處理實體類

返回結果

可以看見User整個資訊都被暴露出去了,密碼、手機號、而且生日的格式還是原生的。

如何處理呢?

我們可以使用@JsonIgnore來忽略某個欄位

springboot 如何使用jackson來處理實體類

JsonIgnore

springboot 如何使用jackson來處理實體類

使用@JsonFormat來格式化日期

springboot 如何使用jackson來處理實體類

JsonFormat

springboot 如何使用jackson來處理實體類

出於安全考慮,不讓別人www.cppcns.com猜出我們的實體欄位來映射出欄位,我們還可以使用

@JsonProperty來起別名

springboot 如何使用jackson來處理實體類

JsonProperty

springboot 如何使用jackson來處理實體類

說這幾個常用的,還有比如@JsonInclude(JsonInclude.Include.NON_NULL)空欄位不返回,大家可以問問度娘,百度ja客棧ckson註解。

Springboot Jackson的操作

有一段時間沒寫部落格了,雖然是菜鳥一枚但畢竟總要有東西記錄學習的,我相信有志者事竟成。今天在工作中使用Jackson轉換了一個bean,傳到測試服上之後發現日期少了一天,使用的是@JsonFormat註解。

這裡寫了一個簡單的小demo記錄一下

表資料:

  springboot 如何使用jackson來處理實體類

實體類屬性:

  springboot 如何使用jackson來處理實體類

controller層就省略掉了,就是呼叫dao進行資料查詢。  

使用postman請求結果如下:

  springboot 如何使用jackson來處理實體類

發現時間是2018/11/15,但資料庫中是2018-11-16,少了一天,原因是在進行日期格式化的時候沒有加入要格式化日期的時區,中國的時區是東八區,

需要加入timezone="GMT+8"

  springboot 如何使用jackson來處理實體類

再次測試:

  springboot 如何使用jackson來處理實體類

這次就可以了!

另外還有幾個常用的註解:

  • @JsonIgnore: 在轉換的時候http://www.cppcns.com忽略該字http://www.cppcns.com段;
  • @JsonProperty:將該欄位的名稱在轉換成json格式後以該名稱顯示;
  • @JsonIgnorePeroperty({"id","name"}):忽略該註解所包含的全部屬性,裡面的引數是一個數組,會把包含的名稱的全部欄位都忽略掉,包括子類;
  • @JsonInclude(Include.NON_EMPTY):在屬性不為空時序列化此欄位,對於字串,即null或空字串;

用到的暫時就這些了。以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。