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的值
  • 相关阅读:
    五大浏览器内核代表作品
    防止高度塌陷的方法
    过滤器(filter)
    置换元素与非置换元素
    display属性和属性值(18个属性值,常见面试题)
    常见的块级元素、内联元素
    html基础表单
    Windows下使用TensorFlow
    Windows安装TensorFlow-Docker Installation of TensorFlow on Windows
    <Web Scraping with Python>:Chapter 1 & 2
  • 原文地址:https://www.cnblogs.com/eternityz/p/15330096.html
Copyright © 2011-2022 走看看