zoukankan      html  css  js  c++  java
  • @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的值
  • 相关阅读:
    创建、删除swap分区
    从show slave status 中1062错误提示信息找到binlog的SQL
    ORA-28040: No matching authentication protocol
    Python中序列解包与函数的参数收集之间的关系
    第8.24节 使用__subclasses__查看类的直接子类
    利用Python特殊变量__dict__快速实现__repr__的一种方法
    Python中使用f字符串进行字符串格式化的方法
    转:python提取浏览器Cookie
    CSDN-markdown编辑器使用方法
    转:解析HTTP协议六种请求方法,get,head,put,delete,post有什么区别
  • 原文地址:https://www.cnblogs.com/eternityz/p/15330096.html
Copyright © 2011-2022 走看看