概述
常用注解
1、@JsonIgnore
@JsonIgnore此注解用于属性或者方法上(最好是属性上),用来完全忽略被注解的字段和方法对应的属性,即便这个字段或方法可以被自动检测到或者还有其他的注解,一般标记在属性或者方法上,返回的json数据即不包含该属性。
因此:getAuthorities()所返回的内容不会出现在返回结果中。
案例:使密码不显示
在实体对象中的password属性上加@JsonIgnore,前端将接收不到密码属性值
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel(value = "User", description = "用户实体,用户相关属性信息")
public class User {
@JsonIgnore
@ApiModelProperty(value = "密码", name = "password", required = false)
private String password;
}
2、@JsonIgnoreProperties
@JsonIgnoreProperties作用在类上,与@JsonIgnore作用相同,都是告诉jackson该忽略哪些属性,可以同时指定多个属性
3、@JsonFormat
@JsonFormat此注解用来设置时间字段的格式,但是不能直接使用,在中国会和我们的北京时间相差8个小时,由于我们是东八区(北京时间),所以我们在格式化的时候要指定时区(timezone)
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
public class MenuStatisticsDetail {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
}
4、@JsonProperty
@JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为true_name,这样前台接收的属性名称就为true_name
import com.fasterxml.jackson.annotation.JsonProperty;
public class User {
@JsonProperty(value = "true_name")
private String trueName;
}
5、@JsonInclude
只在序列化情况下生效
前后端分离的项目,框架中封装了返回给前端的结果。
但是在数据库中查询到的数据为null 的时候,响应的内容没有了,但是前端想要得到这个类型的结构(比如说是个实体,那么就返回他的各个属性;是个数据或集合就返回 [ ] )。最终发现是@JsonInclude这个注解过滤掉了当返回值为null 的时候的属性。
@JsonInclude(JsonInclude.Include.ALWAYS) 默认
@JsonInclude(JsonInclude.Include.NON_DEFAULT ) 属性为默认值不序列化
@JsonInclude(JsonInclude.Include.NON_EMPTY ) 属性为空("") 或者为 NULL 都不序列化
@JsonInclude(JsonInclude.Include.NON_NULL ) 属性为NULL 不序列化
将该标记放在属性上,如果该属性满足它的条件则不参与序列化 ;如果放在类上,那么该标记对这个类的全部属性起作用。例如:
import com.fasterxml.jackson.annotation.JsonInclude;
public class User {
@JsonInclude(JsonInclude.Include.NON_NULL) //当电话为null时就不传
private String phone;
}
6、@JsonPropertyOrder
只在序列化情况下生效
在将 java pojo 对象序列化成为 json 字符串时,使用 @JsonPropertyOrder 可以指定属性在 json 字符串中的顺序。
@JsonPropertyOrder(value={"userName","userId"})
public class User {
private String userId;
private String userName;
}
7、@JsonSetter
只在反序列化情况下生效
@JsonSetter 标注于 setter 方法上,类似 @JsonProperty ,也可以解决 json 键名称和 java pojo 字段名称不匹配的问题。
public class User{
private String tName;
@JsonSetter("trueName")
public void settName(String tName) {
this.tName= tName;
}
}
最后
以上就是忐忑小白菜为你收集整理的Jackson详解及其常用注解的全部内容,希望文章能够帮你解决Jackson详解及其常用注解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复