@JsonIgnoreProperties 忽略属性
此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
写法将此标签加在model 类的类名上 ,可以多个属性也可以单个属性
//生成json时将name和age属性过滤
@JsonIgnoreProperties({"name"},{"age"})
public class user {
private String name;
private int age;
}
//生成json 时不生成age 属性
public class user {
private String name;
@JsonIgnore
private int age;
}
@JsonIgnore 忽略属性
此注解用于属性或者方法上(最好是属性上),作用和上面的@JsonIgnoreProperties一样。
作用于json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
@JsonFormat 属性格式化
此注解用于属性或者方法上(最好是属性上),可以方便的把属性类型直接转化为我们想要的模式
public class User{
// Long对象格式化为字符串
@JsonFormat(shape= JsonFormat.Shape.STRING)
private Long id;
// Date对象格式化为yyyy-MM-dd HH-mm-ss格式的字符串
@JsonFormat(pattern = “yyyy-MM-dd HH-mm-ss”)
private Date date;
}
@JsonSerialize
此注解用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。
@JsonDeserialize
此注解用于属性或者setter方法上,用于在反序列化时可以嵌入我们自定义的代码,类似于上面的@JsonSerialize
@Transient
如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则ORM框架默认其注解为@Basic;
//表示该字段在数据库表中没有
@Transient
public int getAge() {
return 1+1;
}
@JsonIgnoreType
标注在类上,当其他类有该类作为属性时,该属性将被忽略。
@JsonProperty 设置 JSON字段与类属性对应关系
可以指定某个属性和json映射的名称。例如我们有个json字符串为{“user_name”:”aaa”},而java中命名要遵循驼峰规则,则为userName,这时通过@JsonProperty 注解来指定两者的映射规则即可。这个注解也比较常用
public class SomeEntity {
// {“user_name”:”aaa”}
@JsonProperty("user_name")
private String userName;
}
只在序列化情况下生效的注解
JsonPropertyOrder JSON字段排序
在将 java pojo 对象序列化成为 json 字符串时,使用 @JsonPropertyOrder 可以指定属性在 json 字符串中的顺序
JsonInclude 字段JSON序列化的条件
在将 java pojo 对象序列化成为 json 字符串时,使用 @JsonInclude 注解可以控制在哪些情况下才将被注解的属性转换成 json,例如只有属性不为 null 时。
public class SomeEntity {
// 不为NULL时才序列化
@JsonInclude(JsonInclude.Include.NON_NULL)
private String userName;
}
在反序列化情况下生效的注解
@JsonSetter
@JsonSetter 标注于 setter 方法上,类似 @JsonProperty ,也可以解决 json 键名称和 java pojo 字段名称不匹配的问题