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);

以上代码将输出一个包含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());

以上代码将把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);

以上代码将输出包含两个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());
}

以上代码将把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);

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

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