将 List<Map<String, Object>>
转换为对应的对象可以通过反射或手动映射来实现。以下是一个示例,演示如何使用手动映射的方式将 List<Map<String, Object>>
转换为对象列表。
示例代码
假设我们有一个简单的对象类 User
:
public class User {
private String name;
private int age;
// Constructors, getters and setters
public User(String name, int age) {
this.name = name;
this.age = age;
}
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 + '}';
}
}
转换方法
下面是一个方法,将 List<Map<String, Object>>
转换为 List<User>
:
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class Converter {
public static List<User> convertToUserList(List<Map<String, Object>> mapList) {
List<User> userList = new ArrayList<>();
for (Map<String, Object> map : mapList) {
String name = (String) map.get("name");
int age = (Integer) map.get("age");
User user = new User(name, age);
userList.add(user);
}
return userList;
}
}
使用示例
下面是如何使用上述转换方法的示例:
import java.util.*;
public class Main {
public static void main(String[] args) {
// 模拟输入数据
List<Map<String, Object>> mapList = new ArrayList<>();
Map<String, Object> user1 = new HashMap<>();
user1.put("name", "Alice");
user1.put("age", 30);
Map<String, Object> user2 = new HashMap<>();
user2.put("name", "Bob");
user2.put("age", 25);
mapList.add(user1);
mapList.add(user2);
// 转换
List<User> userList = Converter.convertToUserList(mapList);
// 输出结果
for (User user : userList) {
System.out.println(user);
}
}
}
运行结果
运行上述代码将输出:
User{name='Alice', age=30}
User{name='Bob', age=25}
使用Hutool
使用 Hutool 库可以方便地将 List<Map<String, Object>>
转换为对应的对象。Hutool 提供了 BeanUtil
类,使用它的 mapToBean
方法可以实现该转换。
示例代码
假设我们有一个 User
类:
public class User {
private String name;
private int age;
// Constructors, getters and setters
public User(String name, int age) {
this.name = name;
this.age = age;
}
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 + '}';
}
}
转换方法
使用 Hutool 进行转换的代码示例如下:
import cn.hutool.core.bean.BeanUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class Converter {
public static List<User> convertToUserList(List<Map<String, Object>> mapList) {
List<User> userList = new ArrayList<>();
for (Map<String, Object> map : mapList) {
User user = BeanUtil.mapToBean(map, User.class, true);
userList.add(user);
}
return userList;
}
}
使用示例
下面是如何使用上述转换方法的示例:
import java.util.*;
public class Main {
public static void main(String[] args) {
// 模拟输入数据
List<Map<String, Object>> mapList = new ArrayList<>();
Map<String, Object> user1 = new HashMap<>();
user1.put("name", "Alice");
user1.put("age", 30);
Map<String, Object> user2 = new HashMap<>();
user2.put("name", "Bob");
user2.put("age", 25);
mapList.add(user1);
mapList.add(user2);
// 转换
List<User> userList = Converter.convertToUserList(mapList);
// 输出结果
for (User user : userList) {
System.out.println(user);
}
}
}
运行结果
运行上述代码将输出:
User{name='Alice', age=30}
User{name='Bob', age=25}
注意事项
- 确保在项目中引入了 Hutool 库,可以在 Maven 中添加以下依赖:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.9</version> <!-- 请根据需要选择版本 -->
</dependency>
- 使用
BeanUtil.mapToBean
时,可以设置第三个参数为true
,以忽略缺失的字段。