zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    android开发中调用python代码(带参数)
    安卓开发中实现自动点击功能、获取网络信息’-博客新人初来乍到,欢迎大佬多多指教。
    一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事
    EditText搜索关键字,返回结果匹配关键字改变颜色
    Android studio无法创建类和接口问题解决办法。提示 Unable to parse template "Class"
    我的主页
    博客园美化-coffee
    apple面容、指纹验证使用
    iOS数据库FMDB操作
    UIBezierPath绘图基础教程
  • 原文地址:https://www.cnblogs.com/arebirth/p/jsonjacksonannotation.html
Copyright © 2011-2022 走看看