jackson设置读取属性时使⽤⼤写序列化属性时使⽤⼩写jackson是⼀种使⽤⼴泛的json序列化库,虽然性能上可能不如fastjson,但是从其标准性以及安全性上来看(近⼀年爆出了不少fastjson 的漏洞),下⾯就介绍下本⽂的主题,jackson序列化以及反序列化时可能⽤到的⼏个注解:
@Getter
@Setter
public class UserInfoDTO {
@JsonSetter("User")
private UserInfo user;
@Getter
@Setterfastjson忽略属性
public static class UserInfo{
@JsonSetter("Id")
private String id;
@JsonSetter("UserName")
private String userName;
@JsonSetter("RealName")
private String realName;
@JsonSetter("PhoneNumber")
private String phone;
}
}
为什么会出现上⾯的情况呢,因为涉及到java与应⽤之间的数据传输,在中属性的命名规则是⼤写,但是在java中属性是遵从驼峰式命名规则的,所以为了能正确解析从返回的json数据,我们这⾥⽤到了@JsonSetter这个注解,这个注解是⽤在反序列化阶段的(即将json转换为队形的java对象),
另外⼀个与@JsonSetter注解配对的是@JsonGetter注解,该注解是⽤来定义json的序列化阶段的,⽐如返回到前端的属性,由于该例⼦中java应⽤返回到前端也是驼峰式命名,所以没使⽤@JsonGetter注解。
PS:
1、我们不仅可以定义属性的⼤⼩写,还可以定义属性的名字
2、json的序列化过程⽤到@JsonGetter注解(此阶段是读取对象属性然后转换成json),,反序列化⽤到@JsonSetter注解(该过程是读取json然后设置对象属性)
3、如果序列化以及反序列化使⽤相同的名字,⽽且与java类属性名不⼀致的话可以使⽤@JsonProperty注解

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。