當前位置:首頁 > IT技術 > Web編程 > 正文

@JsonProperty注解使用詳解
2021-09-24 14:44:01

一、@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的值

本文摘自 :https://www.cnblogs.com/

開通會員,享受整站包年服務立即開通 >