java json字符串转对象集合
时间: 2025-05-29 07:19:53 浏览: 16
要将JSON字符串转换为Java中的对象集合,可以使用多种库来实现这一功能。以下是基于Jackson和Gson两种常见方式的具体说明。
### 使用Jackson库
通过`ObjectMapper`类,可以从JSON字符串映射到Java的对象列表:
```java
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.List;
public class JsonToListExample {
public static void main(String[] args) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = "[{\"name\":\"zhangsan\",\"age\":14},{\"name\":\"lisi\",\"age\":24}]";
// 定义目标类型的泛型引用
TypeReference<List<User>> typeRef = new TypeReference<>() {};
// 将JSON字符串转换为目标类型
List<User> userList = objectMapper.readValue(jsonString, typeRef);
System.out.println("List of Users: " + userList);
}
static 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;
}
@Override
public String toString() {
return "User{name='" + name + "', age=" + age + "}";
}
}
}
```
这种方式利用了Jackson强大的数据绑定能力[^1]。
---
### 使用Gson库
另一种常用的方法是借助Google的Gson库完成相同的任务:
```java
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.List;
public class GsonToListExample {
public static void main(String[] args) {
Gson gson = new Gson();
String jsonString = "[{\"name\":\"zhangsan\",\"age\":14},{\"name\":\"lisi\",\"age\":24}]";
// 定义目标类型的反射Type
Type listType = new TypeToken<List<User>>() {}.getType();
// 将JSON字符串转换为目标类型
List<User> userList = gson.fromJson(jsonString, listType);
System.out.println("List of Users: " + userList);
}
static 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;
}
@Override
public String toString() {
return "User{name='" + name + "', age=" + age + "}";
}
}
}
```
这种方法同样简单高效,并且支持复杂的嵌套结构[^3]。
---
### 注意事项
- 如果JSON字符串中存在额外字段而这些字段未被定义在对应的POJO类中,则可以通过设置忽略未知属性的方式避免异常发生。对于Jackson而言,可以在`ObjectMapper`实例上配置如下选项:
`objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);`
- 对于大型复杂的数据集,建议提前验证输入JSON的有效性和一致性,以减少潜在错误的发生概率[^4]。
---
阅读全文
相关推荐


















