Java——jackson的注解@JsonProperty、@JsonIgnore、@JsonIgnoreProperties、@JsonFormat、@JSONField

简介: Java——jackson的注解@JsonProperty、@JsonIgnore、@JsonIgnoreProperties、@JsonFormat、@JSONField

前言

本文所写注解位于com.fasterxml.jackson.annotation包中

依赖:

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

java代码中常常用到jackson的注解,主要用到的有:@JsonProperty、@JsonIgnore、@JsonIgnoreProperties、@JsonFormat

举例:

实体类Student

@JsonIgnoreProperties(value = { "address", "score" })
public class Student implements Serializable {
  private static final long serialVersionUID = 1L;
  @JsonProperty(value = "name", required = true)
  private String trueName;
  @JsonIgnore
  private int age;
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GTM+8")
  private Date birthday;
  private String address;
  private String score;
  public String getTrueName() {
    return trueName;
  }
  public void setTrueName(String trueName) {
    this.trueName = trueName;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public Date getBirthday() {
    return birthday;
  }
  public void setBirthday(Date birthday) {
    this.birthday = birthday;
  }
  public String getAddress() {
    return address;
  }
  public void setAddress(String address) {
    this.address = address;
  }
  public String getScore() {
    return score;
  }
  public void setScore(String score) {
    this.score = score;
  }
  @Override
  public String toString() {
    return "name: " + this.trueName + ", address: " + this.address + ", age:" 
         + this.age + ", birthday:" + this.birthday + ", score:" + this.score;
  }
}

测试注解:

public class TestJsonProperty {
  public static void main(String[] args) throws IOException {
    Student student = new Student();
    student.setTrueName("张三");
    student.setAge(20);
    student.setBirthday(new Date());
    student.setAddress("上海市");
    student.setScore("90");
    // 使用writeValuesAsString把对象转化成json字符串。
    String stuJson = new ObjectMapper().writeValueAsString(student);
    System.out.println(stuJson);
    //使用readValue把字符串转化为对象
    Student stu = new ObjectMapper().readValue(stuJson, Student.class);
    System.out.println(stu.toString());
  }
}

结果:

{"birthday":"2020-04-16 03:57:06","name":"张三"}
name: 张三, address: null, age:, birthday:Thu Apr 16 11:57:06 CST 20200, score:null


一、@JsonProperty

写法有两种:

第1种:全写,使用“=”;
@JsonProperty(value = "", required = true)
第2种:简写,直接把value写到括号里,required默认为false。
@JsonProperty("")

value属性:代表该属性序列化和反序列化的时候的key值。

required属性:默认false,例如当required=false的时候,当反序列化的时候没有找到key值,就会报错。


二、@JsonIgnore

一般标记在属性或者方法上,返回的json数据即不包含该属性

三、@JsonIgnoreProperties

类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。

四、@JsonFormat

用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式

写法:@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GTM+8")

五、@JSONField

主要用于解析前端传过来的时间格式的数据

用法:@JSONField(format = "yyyy-MM-dd")

相关文章
|
16天前
|
XML Java 编译器
Java注解的底层源码剖析与技术认识
Java注解(Annotation)是Java 5引入的一种新特性,它提供了一种在代码中添加元数据(Metadata)的方式。注解本身并不是代码的一部分,它们不会直接影响代码的执行,但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段,这些信息可以用于生成文档、编译时检查、运行时处理等。
53 7
|
2月前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
98 43
Java学习十六—掌握注解:让编程更简单
|
22天前
|
Java 编译器 数据库
Java 中的注解(Annotations):代码中的 “元数据” 魔法
Java注解是代码中的“元数据”标签,不直接参与业务逻辑,但在编译或运行时提供重要信息。本文介绍了注解的基础语法、内置注解的应用场景,以及如何自定义注解和结合AOP技术实现方法执行日志记录,展示了注解在提升代码质量、简化开发流程和增强程序功能方面的强大作用。
60 5
|
1月前
|
Java 开发者 Spring
[Java]自定义注解
本文介绍了Java中的四个元注解(@Target、@Retention、@Documented、@Inherited)及其使用方法,并详细讲解了自定义注解的定义和使用细节。文章还提到了Spring框架中的@AliasFor注解,通过示例帮助读者更好地理解和应用这些注解。文中强调了注解的生命周期、继承性和文档化特性,适合初学者和进阶开发者参考。
57 14
|
1月前
|
前端开发 Java
[Java]讲解@CallerSensitive注解
本文介绍了 `@CallerSensitive` 注解及其作用,通过 `Reflection.getCallerClass()` 方法返回调用方的 Class 对象。文章还详细解释了如何通过配置 VM Options 使自定义类被启动类加载器加载,以识别该注解。涉及的 VM Options 包括 `-Xbootclasspath`、`-Xbootclasspath/a` 和 `-Xbootclasspath/p`。最后,推荐了几篇关于 ClassLoader 的详细文章,供读者进一步学习。
37 12
|
2月前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
162 0
在Java中处理JSON数据:Jackson与Gson库比较
|
1月前
|
Java 编译器
Java进阶之标准注解
Java进阶之标准注解
34 0
|
2月前
|
JSON Java 数据库
java 常用注解大全、注解笔记
关于Java常用注解的大全和笔记,涵盖了实体类、JSON处理、HTTP请求映射等多个方面的注解使用。
43 0
java 常用注解大全、注解笔记
|
3月前
|
Arthas Java 测试技术
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
Java字节码文件、组成、详解、分析;常用工具,jclasslib插件、阿里arthas工具;如何定位线上问题;Java注解
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
|
2月前
|
IDE Java 编译器
java的反射与注解
java的反射与注解
20 0