
Java
Jackson 多种类型的反序列化
Jackson 是一种用于 Java 平台的高效 JSON 处理库。它提供了多种类型的反序列化方法,可以将 JSON 数据转换为 Java 对象。本文将介绍 Jackson 中的几种常见反序列化方式,并提供相应的案例代码。1. 反序列化为简单对象当 JSON 数据中只包含简单的键值对时,可以使用 Jackson 将其反序列化为对应的 Java 对象。以下是一个示例代码:Javaimport 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 对象。以下是一个示例代码:Javaimport 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 集合。以下是一个示例代码:Javaimport 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 类,我们可以指定反序列化的目标类型为 ListCopyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号