文章目录
- 处理复杂类型
- 简化 JSON 反序列化
TypeReference 是 Jackson 库中的一个类,主要用于在进行 JSON 序列化和反序列化时描述 Java 类型,尤其是在处理泛型时。Jackson 是一个流行的 Java 库,用于将 Java 对象转换为 JSON 以及将 JSON 转换为 Java 对象。
主要作用:
处理复杂类型
- Java 泛型在类型擦除的情况下,直接使用泛型类型(如 List)会失去其具体类型信息。TypeReference 允许你保留这种信息。
- 通过扩展 TypeReference,你可以创建一个匿名类来捕获需要的类型信息。
简化 JSON 反序列化
- 在反序列化时,使用 TypeReference 可以方便地指定完整的类型信息。例如,要将 JSON 反序列化为 List 类型,可以使用 new TypeReference<List>() {}。
代码示例:
java">import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List; public class Example { public static void main(String[] args) throws Exception { String json = "[{\"name\":\"John\",\"age\":30},{\"name\":\"Jane\",\"age\":25}]"; ObjectMapper objectMapper = new ObjectMapper(); List<User> users = objectMapper.readValue(json, new TypeReference<List<User>>() {}); // now you can use the list of users for (User user : users) { System.out.println(user.getName() + " is " + user.getAge() + " years old."); } }
} class User { private String name; private int age; // Getters and setters public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }
}