package com.lxzn.base.controller; import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class TypeConverter { private static final Logger logger = LoggerFactory.getLogger(TypeConverter.class); private static final ObjectMapper objectMapper = new ObjectMapper(); public static List convertList(List rawList, Class targetType) { if (rawList == null || rawList.isEmpty()) { return Collections.emptyList(); } return rawList.stream() .map(item -> { try { // 处理嵌套Map结构 if (item instanceof Map) { return objectMapper.convertValue(item, targetType); } // 如果已经是目标类型直接转换 if (targetType.isInstance(item)) { return targetType.cast(item); } throw new IllegalArgumentException("类型不兼容: " + item.getClass() + " -> " + targetType); } catch (Exception e) { logger.error("类型转换失败: {}", e.getMessage()); throw new TypeConversionException("无法转换类型: " + item.getClass().getName() + " 到 " + targetType.getName()); } }) .collect(Collectors.toList()); } public static class TypeConversionException extends RuntimeException { public TypeConversionException(String message) { super(message); } } }