使用jackson來處理實體類
1、常用框架:阿里fastjson,谷歌gson等
在大量數據情況下對比性能:
Jackson > fastjson > Gson > Json-lib。
2、在現在的開發中,會有很多調用接口的情況
比如前后臺分離采用json格式,或者調用第三方API等。
小編就以User為例,來講幾個例子:
實體類
user實體
controller
返回結果
可以看見User整個信息都被暴露出去了,密碼、手機號、而且生日的格式還是原生的。
如何處理呢?
我們可以使用@JsonIgnore來忽略某個字段
JsonIgnore
使用@JsonFormat來格式化日期
JsonFormat
出于安全考慮,不讓別人猜出我們的實體字段來映射出數據庫字段,我們還可以使用
@JsonProperty來起別名
JsonProperty
說這幾個常用的,還有比如@JsonInclude(JsonInclude.Include.NON_NULL)空字段不返回,大家可以問問度娘,百度jackson注解。
Springboot Jackson的操作
有一段時間沒寫博客了,雖然是菜鳥一枚但畢竟總要有東西記錄學習的,我相信有志者事竟成。今天在工作中使用Jackson轉換了一個javabean,傳到測試服上之后發現日期少了一天,使用的是@JsonFormat注解。
這里寫了一個簡單的小demo記錄一下
表數據:
實體類屬性:
controller層就省略掉了,就是調用dao進行數據查詢?! ?/p>
使用postman請求結果如下:
發現時間是2018/11/15,但數據庫中是2018-11-16,少了一天,原因是在進行日期格式化的時候沒有加入要格式化日期的時區,中國的時區是東八區,
需要加入timezone="GMT+8"
再次測試:
這次就可以了!
另外還有幾個常用的注解:
- @JsonIgnore: 在轉換的時候忽略該字段;
- @JsonProperty:將該字段的名稱在轉換成json格式后以該名稱顯示;
- @JsonIgnorePeroperty({"id","name"}):忽略該注解所包含的全部屬性,里面的參數是一個數組,會把包含的名稱的全部字段都忽略掉,包括子類;
- @JsonInclude(Include.NON_EMPTY):在屬性不為空時序列化此字段,對于字符串,即null或空字符串;
用到的暫時就這些了。以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/xcc_2269861428/article/details/96198730