jsonproperty,Spring Boot程序中@JsonIgnoreProperties與@JsonIgnore基本使用

 2023-11-19 阅读 39 评论 0

摘要:問題由來: springboot項目中定義了很多類,我們在rest返回中直接返回或者在返回對象中使用這些類,spring已經使用jackson自動幫我們完成這些的to json。但是有時候自動轉的json內容太多,或者格式不符合我們的期望,因此需要調整類的to json過

問題由來
springboot項目中定義了很多類,我們在rest返回中直接返回或者在返回對象中使用這些類,spring已經使用jackson自動幫我們完成這些的to json。但是有時候自動轉的json內容太多,或者格式不符合我們的期望,因此需要調整類的to json過程,或者說希望自定義類的json過程。

解決辦法
使用@JsonIgnoreProperties、@JsonIgnore、@JsonFormat。

jsonproperty。@JsonIgnore注解用來忽略某些字段,可以用在變量或者Getter方法上,用在Setter方法時,和變量效果一樣。這個注解一般用在我們要忽略的字段上。

@JsonIgnoreProperties(ignoreUnknown = true),將這個注解寫在類上之后,就會忽略類中不存在的字段。這個注解還可以指定要忽略的字段,例如@JsonIgnoreProperties({ “password”, “secretKey” })

@JsonFormat可以幫我們完成格式轉換。例如對于Date類型字段,如果不適用JsonFormat默認在rest返回的是long,如果我們使用@JsonFormat(timezone = “GMT+8”, pattern = “yyyy-MM-dd HH:mm:ss”),就返回"2018-11-16 22:58:15"

程序設計中的數據結構包括、具體可以參考官方文檔
https://fasterxml.github.io/jackson-annotations/javadoc/2.6/com/fasterxml/jackson/annotation/JsonIgnoreProperties.html

實際代碼
完整的程序在這里,歡迎加星,fork。
代碼簡要說明, User類的fullName 和comment字段會被@JsonIgnoreProperties注解忽略。address字段會被@JsonIgnore注解忽略。regDate會按照@JsonFormat(timezone = “GMT+8”, pattern = “yyyy-MM-dd HH:mm:ss”)進行格式轉。

@Data
@JsonIgnoreProperties(value = {"fullName", "comment"})
public class User {private String id;private String name;private String fullName;private String comment;private String mail;@JsonIgnoreprivate String address;@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")private Date regDate;private Date reg2Date;
}

我們的controller示例代碼

    @ApiOperation(value = "按用戶id刪除", notes="private")@ApiImplicitParams({@ApiImplicitParam(name = "userId", defaultValue = "2", value = "userID", required = true, dataType = "string", paramType = "path"),})@DeleteMapping(value = "/users/{userId}", produces = "application/json;charset=UTF-8")public User delUser(@PathVariable String userId) {User user = (User)userSvc.deleteById(userId);log.info("rest del user={} by id={}", user, userId);return user;}

把程序地址空間中的邏輯?可以看到返回的對象是User,然后comment、fullName、address屬性被忽略了,regDate的格式進行轉換。
在這里插入圖片描述

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/185586.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息