Jackson 多种类型的反序列化

js

1个回答

写回答

13821189713

2025-07-10 01:12

+ 关注

Java
Java

Jackson 多种类型的反序列化

Jackson 是一种用于 Java 平台的高效 JSON 处理库。它提供了多种类型的反序列化方法,可以将 JSON 数据转换为 Java 对象。本文将介绍 Jackson 中的几种常见反序列化方式,并提供相应的案例代码。

1. 反序列化为简单对象

当 JSON 数据中只包含简单的键值对时,可以使用 Jackson 将其反序列化为对应的 Java 对象。以下是一个示例代码:

Java

import com.fasterXML.jackson.databind.ObjectMapper;

public class SimpleObjectDeserializationExample {

public static void mAIn(String[] args) {

String JSonString = "{\"name\":\"John\",\"age\":30}";

try {

ObjectMapper objectMapper = new ObjectMapper();

Person person = objectMapper.readValue(JSonString, Person.class);

System.out.println(person);

} catch (Exception e) {

e.printStackTrace();

}

}

}

class Person {

private String name;

private int age;

// Getters and setters

@Override

public String toString() {

return "Person{" +

"name='" + name + ''' +

", age=" + age +

'}';

}

}

在上述代码中,我们定义了一个名为 Person 的简单 Java 类,它具有 name 和 age 两个属性。通过 ObjectMapper 的 readValue() 方法,我们可以将 JSON 字符串反序列化为 Person 对象,并打印出来。

2. 反序列化为复杂对象

当 JSON 数据中包含嵌套的对象或数组时,可以使用 Jackson 将其反序列化为复杂的 Java 对象。以下是一个示例代码:

Java

import com.fasterXML.jackson.databind.ObjectMapper;

public class ComplexObjectDeserializationExample {

public static void mAIn(String[] args) {

String JSonString = "{\"name\":\"John\",\"age\":30,\"address\":{\"city\":\"New York\",\"country\":\"USA\"}}";

try {

ObjectMapper objectMapper = new ObjectMapper();

Person person = objectMapper.readValue(JSonString, Person.class);

System.out.println(person);

} catch (Exception e) {

e.printStackTrace();

}

}

}

class Address {

private String city;

private String country;

// Getters and setters

@Override

public String toString() {

return "Address{" +

"city='" + city + ''' +

", country='" + country + ''' +

'}';

}

}

class Person {

private String name;

private int age;

private Address address;

// Getters and setters

@Override

public String toString() {

return "Person{" +

"name='" + name + ''' +

", age=" + age +

", address=" + address +

'}';

}

}

在上述代码中,我们定义了一个名为 Address 的类,表示一个地址对象。Person 类中包含了一个 Address 对象,通过嵌套的方式将其与其他属性关联起来。通过适当地定义类和属性,我们可以使用 Jackson 将复杂的 JSON 数据反序列化为相应的 Java 对象。

3. 反序列化为集合

除了简单对象和复杂对象,Jackson 还支持将 JSON 数组反序列化为 Java 集合。以下是一个示例代码:

Java

import com.fasterXML.jackson.databind.ObjectMapper;

import Java.util.List;

public class CollectionDeserializationExample {

public static void mAIn(String[] args) {

String JSonString = "[{\"name\":\"John\",\"age\":30},{\"name\":\"Jane\",\"age\":25}]";

try {

ObjectMapper objectMapper = new ObjectMapper();

List<Person> people = objectMapper.readValue(JSonString, new TypeReference<List<Person>>() {});

System.out.println(people);

} catch (Exception e) {

e.printStackTrace();

}

}

}

class Person {

private String name;

private int age;

// Getters and setters

@Override

public String toString() {

return "Person{" +

"name='" + name + ''' +

", age=" + age +

'}';

}

}

在上述代码中,我们定义了一个包含多个 Person 对象的 JSON 数组。通过使用 Jackson 的 TypeReference 类,我们可以指定反序列化的目标类型为 List,从而将 JSON 数组反序列化为 Java 集合。

本文介绍了 Jackson 中的几种常见反序列化方式,并提供了相应的案例代码。通过使用 Jackson,我们可以轻松地将 JSON 数据转换为不同类型的 Java 对象,从而实现数据的传输和处理。无论是简单对象、复杂对象还是集合,Jackson 都提供了便捷的方法来进行反序列化操作。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号