json常用的注解

@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 字段名称不匹配的问题

你可能感兴趣的:(json常用的注解)