首页 > 其他分享 >Jackson @JsonProperty 注解

Jackson @JsonProperty 注解

时间:2024-12-14 19:03:34浏览次数:9  
标签:JsonProperty Jackson name JSON Employee 注解 序列化 public

1. 概述

Jackson 是一个流行的Java库,用于将Java对象转换为JSON格式以及从JSON反序列化回Java对象。一种常见的需求是在序列化为JSON或从JSON反序列化时自定义字段的命名。Jackson 的 @JsonProperty 注解正好满足了这一需求。

@JsonProperty 注解概览

@JsonProperty 注解用于指定JSON内容中的预期属性名称。当您希望更改JSON输出中的字段名称,尤其是在Java字段名称和JSON属性名称不一致时,这个注解非常有用。

2. 开发步骤

  1. 创建一个新的Maven项目。
  2. 添加Jackson依赖项。
  3. 使用@JsonProperty设计Employee类。
  4. 创建一个单独的类来实现序列化逻辑。
  5. 创建一个主类来演示序列化过程。

3. 创建Maven项目

创建简单Maven项目有几种方式:

  • 使用命令行界面创建简单的Maven项目
  • 使用Eclipse IDE创建简单的Maven项目
  • 使用IntelliJ IDEA创建简单的Maven项目

4. Maven依赖

打开pom.xml文件,并添加以下Jackson数据绑定依赖项:

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

5. 示例代码

我们将使用员工管理系统示例来构建程序结构:

// Employee.java
import com.fasterxml.jackson.annotation.JsonProperty;

public class Employee {
    @JsonProperty("full_name")
    private String name;
    
    @JsonProperty("years_of_experience")
    private int experience;
    
    // 构造函数, 标准的getter和setter方法...
    public Employee() {}

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getExperience() {
        return experience;
    }

    public void setExperience(int experience) {
        this.experience = experience;
    }
}

// JsonSerializer.java
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonSerializer {
    public static String serializeToJson(Object object) throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        return mapper.writeValueAsString(object);
    }
}

// MainClass.java
public class MainClass {
    public static void main(String[] args) {
        Employee emp = new Employee();
        emp.setName("John Doe");
        emp.setExperience(5);

        try {
            String json = JsonSerializer.serializeToJson(emp);
            System.out.println(json);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }
}

输出:

{"full_name":"John Doe","years_of_experience":5}

代码解释:

  • Employee 类定义了数据结构,并使用@JsonProperty来自定义JSON属性名称。
  • JsonSerializer 类负责序列化操作。
  • MainClass 创建了一个Employee对象实例,使用JsonSerializer将其序列化,并打印出结果的JSON字符串。

6. 结论

Jackson的@JsonProperty注解允许Java开发者在序列化/反序列化期间定制JSON属性名称。这确保了JSON输出可以符合特定的标准或命名约定,给予开发者对其JSON输出的精确控制。通过这种方式,开发人员可以确保他们的应用程序生成的JSON数据与外部系统或API的要求相匹配。

标签:JsonProperty,Jackson,name,JSON,Employee,注解,序列化,public
From: https://blog.csdn.net/woshichenpi/article/details/144329489

相关文章

  • 注解:@FunctionalInterface函数式接口
    @FunctionalInterface是Java8引入的一个标记型注解,用于声明一个接口是函数式接口(FunctionalInterface)。函数式接口是指只有一个抽象方法的接口,这样的接口可以被用作Lambda表达式的类型。使用@FunctionalInterface注解有助于确保接口符合函数式接口的定义,并且在编译时......
  • 【代码设计】Java 用注解简洁明了的标注数据筛选特性
    基础设计默认值:仅包含正常状态数据,例如账户:不包含离职账户的正常账户即为deletedData=false,wantsEnabled=true,wantsDisabled=false场景举例:场景一:正常的只展示正常的账户,则为默认的情况场景二:只搜索不正常的已经删除的账户,则与上一条完全相反,则为wantsEnabled=......
  • testng常用注解
    1.测试用例注解@Test标记一个类或方法作为测试的一部分。常用属性:    @Test(enabled=false)忽略测试,标识它不是一个测试用例    @Test(priority=-1)//priority默认值0,改变用例执行顺序值越小优先级越高    @Test(invocationCount=2)//测试用例执行次......
  • 技术框架中MyBatis注解的学习
    MyBatis注解模式MyBatis两种映射模式MyBatis有两种SQL语句映射模式:一种是基于XML,一种是基于注解。在这之前,我们都是使用基于XML映射文件这种模式实现数据库的各种操作。这次,我打算使用MyBatis注解的方式重新实现之前的数据库操作。MyBatis注解与XML映射文件不同之......
  • spring boot之@Import注解的应用
    我们知道springboot会通过@ComponentScan定义包扫描路径进行业务定义的bean的加载,但是对于很多不在此包路径下定义的bean怎么办呢?比如其他jar包中定义的。这时候import就发挥作用了,通过它也可以实现bean的定义。具体是怎么做的呢,我们先看一下Import这个注解的类:它的value属......
  • canal基于自定义注解使用【java】
    1、引入pom文件<dependency><groupId>com.alibaba.otter</groupId><artifactId>canal.client</artifactId><version>1.1.4</version></dependency>2、自定义注解【BinLogs】importjav......
  • java中的注解使用
    说明java中的注解(Annotation)是用于为代码添加元数据的信息,编译器可以通过注解进行不同的处理。注解本身并不直接影响程序的运行。常见内置注解@Override标记重写父类方法@Deprecated标记类、方法、字段等不推荐使用,可能会在未来的版本中删除。@SuppressWarnings抑制编译器......
  • 23Java之单元测试、反射、注解、动态代理
    恭喜同学们,Java主要的知识我们其实已经学习得差不多了。今天同学们再把单元测试、反射、注解、动态代理学习完。Java的基础知识就算全齐活了。首先,我们进入单元测试的学习。一、单元测试1.1单元测试快速入门所谓单元测试,就是针对最小的功能单元,编写测试代码对其进行正确性......
  • 【Java】自定义注解
    注释和注解不一样注释是给程序员看的,注解是给程序看的需要理解Socket,tomcat等内容一、什么是注解1.注解的作用①:注解一般用于对程序的说明,就像注释一样,但是区别是注释是给人看的,但是注解是给程序看的。②:让编译器进行编译检查的作用,比如下边这个@Override注解是重写的意......
  • 【springboot编程】Spring Boot注解全面解析与实战指南
    SpringBoot的注解体系极大简化了Java应用程序的开发,减少了大量的手动配置和重复代码。通过使用注解,开发者能够快速构建具有复杂功能的应用程序,同时保持代码的简洁和可维护性。无论是异常处理、自动配置,还是依赖注入,这些注解都为开发者提供了灵活而强大的工具,使应用程序的开发......