@JsonProperty注解使用详解
一、@JsonProperty的access属性的序列化和反序列化
实体类
@TableId(type = IdType.AUTO) @ApiModelProperty(value = "自增id") private Long id; @ApiModelProperty(value = "工号") @JsonProperty(access = JsonProperty.Access.READ_ONLY) private String jobNumber; @ApiModelProperty(value = "用户姓名") private String username; @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) @ApiModelProperty(value = "密码") private String pwd;
1.java存读redis测试
保存读取操作
LoginUser loginUser = new LoginUser(); loginUser.setId(1L); loginUser.setUserName("test"); loginUser.setJobNumber("10000000"); loginUser.setPwd("123456"); # redis保存的(带有JsonProperty.Access.WRITE_ONLY,直接将属性忽略) [ "com.iof.upms.modules.system.vo.LoginUser" { id:-1 userName:"test" jobNumber:"10000000" } ] # redis读取的(带有JsonProperty.Access.READ_ONLY,直接将属性忽略) LoginUser(id=1, jobNumber=null, username=test, pwd=null)
在redis中存取时结论
带有JsonProperty.Access.WRITE_ONLY的属性,存入redis时该属性不保存-忽略,也就是序列化时忽略属性 带有JsonProperty.Access.READ_ONLY的属性,从redis读取时该属性不读取-忽略,也就是反序列化时忽略属性
2.postman调用接口时
接口调用测试
LoginUser loginUser = new LoginUser(); loginUser.setId(1L); loginUser.setUserName("test"); loginUser.setJobNumber("10000000"); loginUser.setPwd("123456"); # 接口调用 {"id":1,"jobNumber":"10000000","userName": "test"}
接口调用时结论
带有JsonProperty.Access.WRITE_ONLY的属性,接口请求时该属性忽略,也就是序列化时忽略属性 带有JsonProperty.Access.READ_ONLY的属性,不受影响,接口接收不存在反序列化操作
二、@JsonProperty的value属性序列化和反序列化
实体类
@TableId(type = IdType.AUTO) @ApiModelProperty(value = "自增id") private Long id; @ApiModelProperty(value = "用户姓名") @JsonProperty(value = "name") private String username;
1.java存读redis测试
保存读取操作
LoginUser loginUser = new LoginUser(); loginUser.setId(1L); loginUser.setUserName("test"); # redis保存的(带有JsonProperty.Access.WRITE_ONLY,直接将属性忽略) [ "com.iof.upms.modules.system.vo.LoginUser" { id:-1 name:"test" } ] # redis读取的(带有JsonProperty.Access.READ_ONLY,直接将属性忽略) LoginUser(id=-1, userName=test)
在redis中存取时结论
带有value属性,存入redis(序列化)时存入的key替换为value的值
带有value属性,从redis读取(反序列化)时自动赋值到对应的属性中
2.postman调用接口时
接口调用测试
LoginUser loginUser = new LoginUser(); loginUser.setId(1L); loginUser.setUserName("test"); # 接口调用 {"id":1, "name": "test"}
接口调用时结论
带有@JsonProperty(value = “*”)的属性,接口请求时,key替换为value的值