0
点赞
收藏
分享

微信扫一扫

王道考研计算机网络第五章知识点汇总

夕阳孤草 2023-07-05 阅读 44

工具类:

package com.itheima.util;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class ListMapToBeanUtils {

    /**
     * List<Map<String, Object>>转List<T>
     */
    public static <T> List<T> castMapToBean(List<Map<String, String>> list, Class<T> clazz) throws Exception {
        if (list == null || list.size()==0) {
            return null;
        }
        List<T> tList = new ArrayList<T>();
        // 获取类中声明的所有字段
        Field[] fields = clazz.getDeclaredFields();

        T t;
        for (Map<String, String> map : list) {
            // 每次都先初始化一遍,然后再设置值
            t = clazz.newInstance();
            for (Field field : fields) {
                // 把序列化的字段去除掉
                if (!"serialVersionUID".equals(field.getName())) {
                    // 由于Field都是私有属性,所有需要允许修改
                    field.setAccessible(true);

                    // 设置值, 类型要和vo中的属性名称对应好,不然会报类型转换错误
                    field.set(t, map.get(field.getName()));
                }
            }
            tList.add(t); // 把转换好的数据添加到集合中
        }
        return tList;
    }
}

VO:

package com.itheima.common.entity;

import lombok.Data;

@Data
public class Department {
    private String key;
    private String title;
    private String value;
}

测试:

    @Override
    public Result getQuestionBdDept(HttpServletRequest request) throws Exception {
        List<Map<String, String>> list = new ArrayList<Map<String, String>>();
        Map<String, String> map1=new HashMap<>();
        map1.put("001","张三");
        map1.put("002","李四");
        map1.put("003","王五");
        map1.put("004","赵六");
        list.add(map1);
		
		List<Department> newList = ListMapToBeanUtils.castMapToBean(list , Department.class);
		return Result.success().result(newList );
    }

测试输出:

{
    "data": [
        {
            "key": "001",
            "title": "张三",
            "value": "001"
        },
        {
            "key": "002",
            "title": "李四",
            "value": "002"
        },
        {
            "key": "003",
            "title": "王五",
            "value": "003"
        },
        {
            "key": "004",
            "title": "赵六",
            "value": "004"
        }
    ],
    "code": 200,
    "message": "OK"
}

举报

相关推荐

0 条评论