springboot 如何使用jackson來(lái)處理實(shí)體類
使用jackson來(lái)處理實(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為例,來(lái)講幾個(gè)例子:
實(shí)體類
user實(shí)體
controller
返回結(jié)果
可以看見User整個(gè)信息都被暴露出去了,密碼、手機(jī)號(hào)、而且生日的格式還是原生的。
如何處理呢?
我們可以使用@JsonIgnore來(lái)忽略某個(gè)字段
JsonIgnore
使用@JsonFormat來(lái)格式化日期
JsonFormat
出于安全考慮,不讓別人猜出我們的實(shí)體字段來(lái)映射出數(shù)據(jù)庫(kù)字段,我們還可以使用
@JsonProperty來(lái)起別名
JsonProperty
說(shuō)這幾個(gè)常用的,還有比如@JsonInclude(JsonInclude.Include.NON_NULL)空字段不返回,大家可以問(wèn)問(wèn)度娘,百度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ù)查詢。
使用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)文章
詳解java數(shù)據(jù)結(jié)構(gòu)與算法之雙鏈表設(shè)計(jì)與實(shí)現(xiàn)
本篇文章主要介紹了詳解java數(shù)據(jù)結(jié)構(gòu)與算法之雙鏈表設(shè)計(jì)與實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06SpringBoot工程中Spring Security應(yīng)用實(shí)踐記錄流程分析
Spring Security是一個(gè)能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問(wèn)控制解決方案的安全框架。這篇文章主要介紹了SpringBoot工程中Spring Security應(yīng)用實(shí)踐,需要的朋友可以參考下2021-09-09mysql+spring+mybatis實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫分離的代碼配置
今天小編就為大家分享一篇關(guān)于mysql+spring+mybatis實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫分離的代碼配置,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03SpringCloud2020整合Nacos-Bootstrap配置不生效的解決
這篇文章主要介紹了SpringCloud2020整合Nacos-Bootstrap配置不生效的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Java并發(fā)編程之線程池實(shí)現(xiàn)原理詳解
池化思想是一種空間換時(shí)間的思想,期望使用預(yù)先創(chuàng)建好的對(duì)象來(lái)減少頻繁創(chuàng)建對(duì)象的性能開銷,java中有多種池化思想的應(yīng)用,例如:數(shù)據(jù)庫(kù)連接池、線程池等,下面就來(lái)具體講講2023-05-05Mybatis實(shí)現(xiàn)分頁(yè)的注意點(diǎn)
Mybatis提供了強(qiáng)大的分頁(yè)攔截實(shí)現(xiàn),可以完美的實(shí)現(xiàn)分功能。下面小編給大家分享小編在使用攔截器給mybatis進(jìn)行分頁(yè)所遇到的問(wèn)題及注意點(diǎn),需要的朋友一起看看吧2017-07-07Java 房屋租賃系統(tǒng)的實(shí)現(xiàn)流程
讀萬(wàn)卷書不如行萬(wàn)里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)一個(gè)房屋租賃系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-11-11