工具类
pom
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
<!-- commons-collections4 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
对象转换进阶辅助接口
@FunctionalInterface
public interface ConvertCallBack<E, T> {
/**
* 类型转换完成时调用
* @param convertBefore 转换前元素
* @param convertAfter 转换后元素
*/
void converted(E convertBefore, T convertAfter);
}
转换util
import com.alibaba.fastjson.JSON;
import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
import java.util.stream.Collectors;
public class ConvertBeanUtil {
/**
* 转换集合
*/
public static <E,T> List<T> copyList(List<E> list, Class<T> clazz) {
if (CollectionUtils.isEmpty(list) || clazz == null){
return new ArrayList<>();
}
String oldOb = JSON.toJSONString(list);
return JSON.parseArray(oldOb, clazz);
}
/**
* 转换集合(进阶)
*/
public static <E,T> List<T> copyList(List<E> list, Class<T> clazz,ConvertCallBack<E, T> convertCallBack) {
if (CollectionUtils.isEmpty(list) || clazz == null){
return new ArrayList<>();
}
return list.stream().map(e -> copy(e,clazz,convertCallBack)).collect(Collectors.toList());
}
/**
* 转换对象
*/
public static <E,T> T copy(Object ob, Class<T> clazz) {
if (ob == null || clazz == null){
return null;
}
String oldOb = JSON.toJSONString(ob);
return JSON.parseObject(oldOb, clazz);
}
/**
* 转换对象(进阶)
*/
public static <E,T> T copy(E ob, Class<T> clazz,ConvertCallBack<E, T> convertCallBack) {
if (ob == null || clazz == null){
return null;
}
String oldOb = JSON.toJSONString(ob);
T model = JSON.parseObject(oldOb, clazz);
convertCallBack.converted(ob,model);
return model;
}
}
示例
//对象转换
UserDTO userDTO = ConvertBeanUtil.copy(userInfo,UserDTO.class);
//对象转换进阶
UserDTO userDTO = ConvertBeanUtil.copy(userInfo, UserDTO.class, (o1, o2) -> {
//无法直接转换需要操作的字段在这里处理
o2.setName(o1.getName() + "名称");
});
//集合转换操作同上