springboot 如何使用jackson來處理實(shí)體類
使用jackson來處理實(shí)體類
1、常用框架:阿里fastjson,谷歌gson等
在大量數(shù)據(jù)情況下對(duì)比性能:
Jackson > fastjson > Gson > Json-lib。
2、在現(xiàn)在的開發(fā)中,會(huì)有很多調(diào)用接口的情況
比如前后臺(tái)分離采用json格式,或者調(diào)用第三方API等。
小編就以User為例,來講幾個(gè)例子:
實(shí)體類

user實(shí)體

controller

返回結(jié)果
可以看見User整個(gè)信息都被暴露出去了,密碼、手機(jī)號(hào)、而且生日的格式還是原生的。
如何處理呢?
我們可以使用@JsonIgnore來忽略某個(gè)字段

JsonIgnore

使用@JsonFormat來格式化日期

JsonFormat

出于安全考慮,不讓別人猜出我們的實(shí)體字段來映射出數(shù)據(jù)庫(kù)字段,我們還可以使用
@JsonProperty來起別名

JsonProperty

說這幾個(gè)常用的,還有比如@JsonInclude(JsonInclude.Include.NON_NULL)空字段不返回,大家可以問問度娘,百度jackson注解。
Springboot Jackson的操作
有一段時(shí)間沒寫博客了,雖然是菜鳥一枚但畢竟總要有東西記錄學(xué)習(xí)的,我相信有志者事竟成。今天在工作中使用Jackson轉(zhuǎn)換了一個(gè)javabean,傳到測(cè)試服上之后發(fā)現(xiàn)日期少了一天,使用的是@JsonFormat注解。
這里寫了一個(gè)簡(jiǎn)單的小demo記錄一下
表數(shù)據(jù):

實(shí)體類屬性:

controller層就省略掉了,就是調(diào)用dao進(jìn)行數(shù)據(jù)查詢?! ?/p>
使用postman請(qǐng)求結(jié)果如下:

發(fā)現(xiàn)時(shí)間是2018/11/15,但數(shù)據(jù)庫(kù)中是2018-11-16,少了一天,原因是在進(jìn)行日期格式化的時(shí)候沒有加入要格式化日期的時(shí)區(qū),中國(guó)的時(shí)區(qū)是東八區(qū),
需要加入timezone="GMT+8"

再次測(cè)試:

這次就可以了!
另外還有幾個(gè)常用的注解:
@JsonIgnore: 在轉(zhuǎn)換的時(shí)候忽略該字段;@JsonProperty:將該字段的名稱在轉(zhuǎn)換成json格式后以該名稱顯示;@JsonIgnorePeroperty({"id","name"}):忽略該注解所包含的全部屬性,里面的參數(shù)是一個(gè)數(shù)組,會(huì)把包含的名稱的全部字段都忽略掉,包括子類;@JsonInclude(Include.NON_EMPTY):在屬性不為空時(shí)序列化此字段,對(duì)于字符串,即null或空字符串;
用到的暫時(shí)就這些了。以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
一次線上websocket返回400問題排查的實(shí)戰(zhàn)記錄
最近項(xiàng)目中有端對(duì)端通信場(chǎng)景,實(shí)時(shí)性要求較高,考慮后選用了websocket 這一通信協(xié)議,下面這篇文章主要給大家介紹了一次線上websocket返回400問題排查的實(shí)戰(zhàn)記錄,需要的朋友可以參考下2022-04-04
java中使用try-catch-finally一些值得注意的事(必看)
下面小編就為大家?guī)硪黄猨ava中使用try-catch-finally一些值得注意的事(必看)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08
jasypt對(duì)配置文件的數(shù)據(jù)加密與解密方式
這篇文章主要介紹了jasypt對(duì)配置文件的數(shù)據(jù)加密與解密方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
淺談Java中Collection和Collections的區(qū)別
下面小編就為大家?guī)硪黄獪\談Java中Collection和Collections的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08
Java實(shí)現(xiàn)自定義自旋鎖代碼實(shí)例
這篇文章主要介紹了Java實(shí)現(xiàn)自定義自旋鎖代碼實(shí)例,Java自旋鎖是一種線程同步機(jī)制,它允許線程在獲取鎖時(shí)不立即阻塞,而是通過循環(huán)不斷嘗試獲取鎖,直到成功獲取為止,自旋鎖適用于鎖競(jìng)爭(zhēng)激烈但持有鎖的時(shí)間很短的情況,需要的朋友可以參考下2023-10-10
MyBatis中mapper.java和mapper.xml的關(guān)系說明
這篇文章主要介紹了MyBatis中mapper.java和mapper.xml的關(guān)系說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05

