Jackson 是一个非常流行和强大的 Java 库,用于处理 JSON 数据和 Java 对象之间的转换。它提供了许多基础核心用法,使开发人员能够轻松地进行数据序列化和反序列化操作。在本文中,我将介绍 Jackson 的三个基础核心用法:对象转换、集合转换和注解。

1. 对象转换
对象转换是 Jackson 最常见的用法之一。它可以将 Java 对象转换为 JSON 格式的字符串,或者将 JSON 格式的字符串转换为 Java 对象。为了将 Java 对象转换为 JSON 字符串,我们可以使用 ObjectMapper 类的 writeValueAsString() 方法。以下是一个示例:

ObjectMapper objectMapper = new ObjectMapper();
Person person = new Person("John", 30);
String jsonString = objectMapper.writeValueAsString(person);
System.out.println(jsonString);
Java

以上代码将输出一个包含 Person 对象属性的 JSON 字符串。

为了将 JSON 字符串转换为 Java 对象,我们可以使用 ObjectMapper 类的 readValue() 方法。以下是一个示例:

String jsonString = "{\"name\":\"John\",\"age\":30}";
Person person = objectMapper.readValue(jsonString, Person.class);
System.out.println(person.getName());
System.out.println(person.getAge());
Java

以上代码将把 JSON 字符串转换为一个 Person 对象,并打印出对象的属性值。

2. 集合转换
Jackson 还提供了一种简便的方式来处理集合类型的转换。我们可以使用 ObjectMapper 类的 writeValueAsString() 方法将 Java 集合转换为 JSON 字符串,或者使用 readValue() 方法将 JSON 字符串转换为 Java 集合。以下是一个示例:

List<Person> persons = new ArrayList<>();
persons.add(new Person("John", 30));
persons.add(new Person("Jane", 25));

String jsonString = objectMapper.writeValueAsString(persons);
System.out.println(jsonString);
Java

以上代码将输出包含两个 Person 对象的 JSON 数组。

为了将 JSON 数组转换为 Java 集合,我们可以使用 TypeReference 类来指定转换的目标类型。以下是一个示例:

String jsonString = "[{\"name\":\"John\",\"age\":30},{\"name\":\"Jane\",\"age\":25}]";
List<Person> persons = objectMapper.readValue(jsonString, new TypeReference<List<Person>>() {});
for (Person person : persons) {
    System.out.println(person.getName());
    System.out.println(person.getAge());
}
Java

以上代码将把 JSON 数组转换为一个包含两个 Person 对象的 List,并打印出每个对象的属性值。

3. 注解
Jackson 提供了强大的注解功能,可以用于自定义对象与 JSON 之间的映射关系。使用注解可以灵活地控制 JSON 格式以及 Java 对象的转换过程。以下是一些常用的注解:

- @JsonProperty: 用于指定 Java 对象属性与 JSON 字段的映射关系。
- @JsonFormat: 用于格式化日期、时间等特定类型的属性。
- @JsonIgnore: 用于忽略某个属性,不进行序列化和反序列化。
- @JsonInclude: 用于控制序列化时是否包含空值或默认值。

以下是一个示例:

public class Person {
    @JsonProperty("name")
    private String fullName;
    private int age;

    // 省略构造方法和Getter/Setter方法
}

Person person = new Person("John", 30);
String jsonString = objectMapper.writeValueAsString(person);
System.out.println(jsonString);
Java

以上代码使用 @JsonProperty注解将fullName 属性映射为 JSON 字段名为 "name",输出的 JSON 字符串中会有 "name" 字段。

以上是 Jackson 的三个基础核心用法:对象转换、集合转换和注解。Jackson 提供了丰富的功能和灵活的配置选项,使 Java 与 JSON 之间的转换变得简单和高效。无论是处理简单的数据还是复杂的数据结构,Jackson 都能满足我们的需求。