将map装换为javabean对象和将map转化为list

将map装换为javabean对象***将List<Map<String,Object>>转换为List<T>

controller里面的调用

@Login
@PostMapping(value = "/save")
@ApiOperation("新增用户课程")
public R save(@RequestBody Map<String, Object> map, @LoginUser UserEntity userEntity)
throws InstantiationException, IllegalAccessException {
Map<String, Object> map1 = (Map<String, Object>) map.get("data");
List<UserCouserPeriods> list = BeanMapUtils.mapsToObjects((List<Map<String, Object>>) map1.get("periods"),
UserCouserPeriods.class);
//System.out.println(list);
List<UserCourseEntity> list1 = BeanMapUtils.mapsToObjects((List<Map<String, Object>>) map1.get("courses"),
UserCourseEntity.class);



//工具类

package net.wkang.common.utils;



import com.google.common.collect.Lists;
import net.wkang.common.exception.RRException;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;


/**
 * Created by wolf on 2018/4/9.
 */
public class BeanMapUtils {




    /**
     * 将map装换为javabean对象
     * @param map
     * @param bean
     * @return
     */
    public static <T> T mapToBean(Map<String, Object> map,T bean) {
        try {
            ConvertUtils.register(new Converter() {
                @Override
                public Object convert(Class type, Object value) {
                    if (value==null){
                        return null;
                    }
                    if (!(value instanceof String)){
                        throw new RRException("只支持字符串转换!");
                    }
                    String str = (String)value;
                    if (str.trim().equals("")){
                        return null;
                    }
                    SimpleDateFormat sd = new SimpleDateFormat(DateUtils.DATE_TIME_PATTERN);
                    try {
                        return sd.parse(str);
                    } catch (ParseException e) {
                        throw new RRException(e.getMessage());
                    }
                }
            },java.util.Date.class);
            BeanUtils.populate(bean,map);
        } catch (Exception e) {
            throw new RRException(e.getMessage());
        }
        return bean;
    }

    /**
     * 将List<Map<String,Object>>转换为List<T>
     * @param maps
     * @param clazz
     * @return
     * @throws InstantiationException
     * @throws IllegalAccessException
     */
    public static <T> List<T> mapsToObjects(List<Map<String, Object>> maps,Class<T> clazz) throws InstantiationException, IllegalAccessException {
        List<T> list = Lists.newArrayList();
        if (maps != null && maps.size() > 0) {
            Map<String, Object> map = null;
            T bean = null;
            for (int i = 0,size = maps.size(); i < size; i++) {
                map = maps.get(i);
                bean = clazz.newInstance();
                mapToBean(map, bean);
                list.add(bean);
            }
        }
        return list;
    }
}


猜你喜欢

转载自blog.csdn.net/qq_41579101/article/details/80633629