List实体转list map
时间: 2025-05-23 21:45:46 浏览: 18
### 将 `List<实体对象>` 转换为 `List<Map<String, Object>>` 的实现
在 Java 中,可以利用反射机制或者手动映射的方式将 `List<实体对象>` 转换为 `List<Map<String, Object>>` 结构。以下是两种常见的实现方法:
#### 方法一:使用手写逻辑逐字段映射
通过遍历列表中的每一个实体对象,并将其属性提取到 `Map<String, Object>` 中。
```java
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class EntityToMapConverter {
public static List<Map<String, Object>> convertEntityToListOfMaps(List<?> entities) {
List<Map<String, Object>> result = new ArrayList<>();
for (Object entity : entities) {
try {
Map<String, Object> map = new HashMap<>();
Field[] fields = entity.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
String key = field.getName();
Object value = field.get(entity);
if (value != null) {
map.put(key, value);
}
}
result.add(map);
} catch (IllegalAccessException e) {
throw new RuntimeException("Error converting entity to map", e);
}
}
return result;
}
public static void main(String[] args) throws IllegalAccessException {
// 假设有一个简单的实体类 Person
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
// 创建一些示例数据
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 30));
people.add(new Person("Bob", 25));
// 调用转换函数
List<Map<String, Object>> listOfMaps = convertEntityToListOfMaps(people);
// 输出结果
for (Map<String, Object> map : listOfMaps) {
System.out.println(map);
}
}
}
```
此方法适用于简单场景下的实体对象转 `Map` 操作[^1]。
---
#### 方法二:借助 Jackson 库自动序列化
Jackson 是一个强大的 JSON 处理库,能够轻松完成对象与 `Map` 或者 JSON 字符串之间的相互转化。
```java
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class JacksonEntityToMapConverter {
public static List<Map<String, Object>> convertEntityToListOfMaps(List<?> entities) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
// 先将整个列表序列化为 JSON 字符串
String jsonString = objectMapper.writeValueAsString(entities);
// 再反序列化为目标类型的列表
return objectMapper.readValue(jsonString, new TypeReference<List<Map<String, Object>>>() {});
}
public static void main(String[] args) throws Exception {
// 定义一个简单的实体类
class Product {
private String name;
private double price;
public Product(String name, double price) {
this.name = name;
this.price = price;
}
}
// 构造测试数据
List<Product> products = new ArrayList<>();
products.add(new Product("Laptop", 999.99));
products.add(new Product("Smartphone", 499.99));
// 调用转换函数
List<Map<String, Object>> maps = convertEntityToListOfMaps(products);
// 打印结果
for (Map<String, Object> map : maps) {
System.out.println(map);
}
}
}
```
这种方法更加简洁高效,尤其适合处理复杂的嵌套对象结构[^2]。
---
### 总结
以上提供了两种不同的解决方案来实现从 `List<实体对象>` 到 `List<Map<String, Object>>` 的转换。如果项目中已经引入了第三方依赖(如 Jackson),推荐优先采用第二种方案;而如果没有外部依赖,则可以选择第一种基于反射的手动实现方式。
阅读全文
相关推荐


















