文章目录
TypeReference 是 Jackson 库中的一个类,主要用于在进行 JSON 序列化和反序列化时描述 Java 类型,尤其是在处理泛型时。Jackson 是一个流行的 Java 库,用于将 Java 对象转换为 JSON 以及将 JSON 转换为 Java 对象。
主要作用:
处理复杂类型
- Java 泛型在类型擦除的情况下,直接使用泛型类型(如 List)会失去其具体类型信息。TypeReference 允许你保留这种信息。
- 通过扩展 TypeReference,你可以创建一个匿名类来捕获需要的类型信息。
简化 JSON 反序列化
- 在反序列化时,使用 TypeReference 可以方便地指定完整的类型信息。例如,要将 JSON 反序列化为 List 类型,可以使用 new TypeReference<List>() {}。
代码示例:
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;
}
}