• Jackson中@JsonProperty等常用注解


    Java生态圈中有很多处理JSON和XML格式化的类库,Jackson是其中比较著名的一个。虽然JDK自带了XML处理类库,但是相对来说比较低级

    本文将介绍的Jackson常用注解:精简概述

    Jackson的依赖

    <dependency> 
        <groupId>com.fasterxml.jackson.core</groupId> 
            <artifactId>jackson-databind</artifactId> 
        <version>2.5.3</version>
    </dependency>   

    1.@JsonProperty:此注解作用于属性上,作用是把该属性的名称序列化成另一个自己想要的名称

    对属性名进行重命名,在java里我们墨守规定驼峰命名,但是在一些特殊的场合下,比如数据库是下划线等,再此我们就可以进行映射

    对属性名称重命名,比如在很多场景下Java对象的属性是按照规范的驼峰书写,但在数据库设计时使用的是下划线连接方式,此处在进行映射的时候 

    public class CatNode {
        //@JsonProperty 指定将java对象转化为json格式的时候,对应的key
        @JsonProperty(value = "u")
        private String url;
        @JsonProperty(value = "n")
        private String name;
        @JsonProperty(value = "i")
        private List<?> list;
    
        public String getUrl() {
            return url;
        }
    
        public void setUrl(String url) {
            this.url = url;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public List<?> getList() {
            return list;
        }
    
        public void setList(List<?> list) {
            this.list = list;
        }
    }

    2.@JsonIgnore注解用于属性或者方法上,用来完全忽略被注释的字段和方法对应的属性,即便这个还有其它注解,

    一般标记在属性或者方法上,返回的json数据不包含被该注解引用的属性或者方法

    例如下面代码中:我们不想让a属性被转换成json格式数据,即这个类jishi转换成json格式,也不会包含该属性字段。

    public class Test{
    
       @JsonIgnore
       private String a;
    
       private String b;
        
    }

    3.@JsonFormat可以帮助我们完成格式转换,

    例如我们在进行json转换的时候包含日期,通常不经过处理的话会是一个不是很友好的格式,那么我们就可以通过@JsonFormat来进行指定格式

    例如:

    @JsonFormat(timezone="GTM+8",pattern="yyyy-MM-dd HH:mm:ss")
    private Date createDate;

    4.@JsonIgnoreProperties可以帮我们忽略类中不存在的字段

    例如:@JsonIgnoreProperties(ignoreUnknown = true)

    还可以指定忽略类中多个字段在类被转成json的格式忽略掉

    @JsonIngoreProperties(value={"name","sex"})
    public class Test{
        private String name;
        private String pwd;
        private String sex;  
    }

    @JsonIgnoreProperties和@JsonIgnore我们日常使用中最大的区别就是前者修饰类的,后者多用于修饰类中的属性

    具体可以查看官方文档:

    https://fasterxml.github.io/jackson-annotations/javadoc/2.6/com/fasterxml/jackson/annotation/JsonIgnoreProperties.html

  • 相关阅读:
    C语言 · 阶乘计算 · 基础练习
    C语言 · 查找整数 · 基础练习
    UML课程复习重点
    运维参考
    mysql语法总结
    Python杂篇
    Python练习题
    Python参考
    k8s中ipvs和iptables选择
    安装cni网络插件-非必须
  • 原文地址:https://www.cnblogs.com/arebirth/p/jsonjacksonannotation.html
Copyright © 2020-2023  润新知