JAVA编码(43)—— Java对象之前的相互转换(重要)

本文介绍了一种快速实现Java对象与Map互相转换的方法,包括单个对象及列表的转换,并提供了使用BeanUtils和ObjectMapper的具体实现示例。

1、相同类的互转(属性相同)

2、Map转为POJO对象

package com.sinosoft.common;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 快速的 domain 转换为DTO,
 * 将所有Enity 中和DTO中相同属性的值进行转换。
 */
public class EntityAndDTO {
    /**
     * 泛型的转换接口需要传入需要被转换的对象和转换后的对象的Class
     *
     * @param t
     * @param eClass
     * @param <E>
     * @param <T>
     * @return E
     */
    public static <E, T> E convert(T t, Class<E> eClass) {
        E e = null;
        try {
            e = eClass.newInstance();
            BeanUtils.copyProperties(t, e);

        } catch (InstantiationException e1) {
            e1.printStackTrace();
        } catch (IllegalAccessException e1) {
            e1.printStackTrace();
        }
        return e;
    }

    public static <E, T> List<E> convert(List<T> tList, Class<E> eClass) {

        List<E> eList = new ArrayList<E>();
        for (T t : tList) {
            eList.add(convert(t, eClass));
        }
        return eList;
    }

    /**
     * 将map结果集转换为POJO对象
     * @param tList source
     * @param eClass class
     * @param <E> e
     * @param <T> t
     * @return t
     */
    public static <E, T> List<E> mapConvertToBean(List<T> tList, Class<E> eClass) {
        List<E> eList = new ArrayList<E>();
        try {
            for (T t : tList) {
                Map<String, Object> map = (Map<String, Object>) t;
                eList.add((E) mapConvertToObject(map, eClass));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return eList;
    }

    /**
     * 将map转换为POJO对象
     * @param map map
     * @param beanClass class
     * @return r
     */
    public static Object mapConvertToObject(Map<String, Object> map, Class beanClass) {
        ObjectMapper mapper = new ObjectMapper();
        Object pojo = mapper.convertValue(map, beanClass);
        return pojo;
    }

}

 当然通过Gson也是可以的

Gson gson = new Gson();
JsonElement jsonElement = gson.toJsonTree(map);
MyPojo pojo = gson.fromJson(jsonElement, MyPojo.class);

 

转载于:https://www.cnblogs.com/xushuyi/articles/6701229.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值