在Java中,fastjson
是一个流行的 JSON 处理库,它提供了丰富的功能来解析和生成 JSON 数据。JSON.parseObject
方法用于将 JSON 字符串解析为 Java 对象,而 new TypeReference<>
则用于在泛型类型擦除的情况下,指定具体的泛型类型信息。
用法
假设你有一个包含泛型类型的 Java 类,例如:
java复制代码
import java.util.List; | |
public 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; | |
} | |
} | |
public class UserList { | |
private List<User> users; | |
// getters and setters | |
public List<User> getUsers() { | |
return users; | |
} | |
public void setUsers(List<User> users) { | |
this.users = users; | |
} | |
} |
现在,你有一个 JSON 字符串,表示一个 UserList
对象:
json复制代码
{ | |
"users": [ | |
{"name": "Alice", "age": 30}, | |
{"name": "Bob", "age": 25} | |
] | |
} |
你可以使用 JSON.parseObject
和 new TypeReference<>
来解析这个 JSON 字符串为 UserList
对象:
java复制代码
import com.alibaba.fastjson.JSON; | |
import com.alibaba.fastjson.TypeReference; | |
import java.util.List; | |
public class Main { | |
public static void main(String[] args) { | |
String jsonString = "{\"users\":[{\"name\":\"Alice\",\"age\":30},{\"name\":\"Bob\",\"age\":25}]}"; | |
// 使用 JSON.parseObject 和 TypeReference 来解析 JSON 字符串 | |
UserList userList = JSON.parseObject(jsonString, new TypeReference<UserList>() {}); | |
// 输出解析结果 | |
for (User user : userList.getUsers()) { | |
System.out.println("Name: " + user.getName() + ", Age: " + user.getAge()); | |
} | |
} | |
} |
作用
- 解析 JSON 字符串为 Java 对象:
JSON.parseObject
方法将 JSON 字符串解析为 Java 对象。 - 处理泛型类型信息:由于 Java 的泛型类型擦除,在运行时泛型类型信息会丢失。
new TypeReference<>() {}
提供了一种方式来在运行时保留泛型类型信息,使得fastjson
能够正确地解析 JSON 字符串为具有正确泛型类型的 Java 对象。
注意事项
- 确保 JSON 字符串的格式与 Java 对象的结构相匹配。
fastjson
库需要添加到你的项目中,可以通过 Maven 或 Gradle 等构建工具来管理依赖。
Maven 依赖
如果你使用 Maven,可以在 pom.xml
文件中添加以下依赖:
xml复制代码
<dependency> | |
<groupId>com.alibaba</groupId> | |
<artifactId>fastjson</artifactId> | |
<version>1.2.83</version> <!-- 请根据需要选择最新版本 --> | |
</dependency> |
通过这种方式,你可以方便地将 JSON 字符串解析为包含泛型类型的 Java 对象。