json常⽤的注解json值的类型有哪些
json注解:
1、@jsonIgnoreProperties:
此注解是类注解,作⽤是json序列化时将java bean中的⼀些属性忽略掉,序列化和反序列化都受影响。
写法将此标签加在model 类的类名上,可以多个属性也可以单个属性
//⽣成json时将name和age属性过滤
@JsonIgnoreProperties({"name"},{"age"})
public class user {
private String name;
private int age;
}
2、@JsonIgnore:(常⽤注解)
此注解⽤于属性或者⽅法上(最好是属性上),作⽤和上⾯的@JsonIgnoreProperties⼀样。
//⽣成json 时不⽣成age 属性
public class user {
private String name;
@JsonIgnore
private int age;
}
3、@JsonFormat:(常⽤注解)
此注解⽤于属性或者⽅法上(最好是属性上),可以⽅便的把Date类型直接转化为我们想要的模式,⽐如:
public class User{
@JsonFormat(pattern = “yyyy-MM-dd HH-mm-ss”)
private Date date;
}
4、@JsonSerialize:
此注解⽤于属性或者getter⽅法上,⽤于在序列化时嵌⼊我们⾃定义的代码,⽐如序列化⼀个double时在其后⾯限制两位⼩数点。
5、@JsonDeserialize:
此注解⽤于属性或者setter⽅法上,⽤于在反序列化时可以嵌⼊我们⾃定义的代码,类似于上⾯的@JsonSerialize
6、@Transient
如果⼀个属性并⾮数据库表的字段映射,就务必将其标⽰为@Transient,否则ORM框架默认其注解为@Basic;
/
/表⽰该字段在数据库表中没有
@Transient
public int getAge() {
return 1+1;
}
6、@JsonIgnoreType:
标注在类上,当其他类有该类作为属性时,该属性将被忽略。
7、@JsonProperty
@JsonProperty 可以指定某个属性和json映射的名称。例如我们有个json字符串为{“user_name”:”aaa”},
⽽java中命名要遵循驼峰规则,则为userName,这时通过@JsonProperty 注解来指定两者的映射规则即可。这个注解也⽐较常⽤。
public class SomeEntity {
@JsonProperty("user_name")
private String userName;
}
只在序列化情况下⽣效的注解
1. @JsonPropertyOrder
在将 java pojo 对象序列化成为 json 字符串时,使⽤ @JsonPropertyOrder 可以指定属性在 json 字符串中的顺序。
2. @JsonInclude
在将 java pojo 对象序列化成为 json 字符串时,使⽤ @JsonInclude 注解可以控制在哪些情况下才将被注解的属性转换成 json,例如只有属性不为 null 时。
@JsonInclude(JsonInclude.Include.NON_NULL)
这个注解放在类头上,返给前端的json⾥就没有null类型的字段,即实体类与json互转的时候属性值为null的不参与序列化。
另外还有很多其它的范围,例如 NON_EMPTY、NON_DEFAULT等
在反序列化情况下⽣效的注解
1.@JsonSetter
@JsonSetter 标注于 setter ⽅法上,类似 @JsonProperty ,也可以解决 json 键名称和 java pojo 字段名称不匹配的问题。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论