Object转Map和Map转Object(对象转map,map转对象)

第一种方法:fastJosn

1
2
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

Object转Map

1
2
3
4
5
6
7
8
9
10
11
FindArchiveDto findArchiveDto = new FindArchiveDto();

findArchiveDto.setContractStatus("降龙");

findArchiveDto.setCustName("明华");

findArchiveDto.setDepartmentName("赵无极");

Map map = JSONObject.parseObject(JSONObject.toJSONString(findArchiveDto), Map.class);

Map<String,Object> map = JSONObject.parseObject(JSON.toJSONString(findArchiveDto));

还可以用org.apache.commons.beanutils.BeanMap进行转换

1
Map<String, Object> map = new org.apache.commons.beanutils.BeanMap(findArchiveDto);

Map转Object

1
2
3
4
5
Map maps = new HashMap();
maps.put("contractStatus", "降龙");
map.put("custName", "明华");
map.put("departmentName", "赵无极");
FindArchiveDto findArchiveDto1 = JSON.parseObject(JSON.toJSONString(maps), FindArchiveDto.class);

还可以用BeanUtils.populate()将map转为对象

1
2
3
FindArchiveDto dto = new FindArchiveDto();

BeanUtils.populate(dto, map);

第二种方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//Object转Map
public static Map<String, Object> getObjectToMap(Object obj) throws IllegalAccessException {
    Map<String, Object> map = new LinkedHashMap<String, Object>();
    Class<?> clazz = obj.getClass();
    System.out.println(clazz);
    for (Field field : clazz.getDeclaredFields()) {
        field.setAccessible(true);
        String fieldName = field.getName();
        Object value = field.get(obj);
        if (value == null){
            value = "";
        }
        map.put(fieldName, value);
    }
    return map;
}
//Map转Object
public static Object mapToObject(Map<Object, Object> map, Class<?> beanClass) throws Exception {
    if (map == null)
        return null;
    Object obj = beanClass.newInstance();
    Field[] fields = obj.getClass().getDeclaredFields();
    for (Field field : fields) {
        int mod = field.getModifiers();
        if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
            continue;
        }
        field.setAccessible(true);
        if (map.containsKey(field.getName())) {
            field.set(obj, map.get(field.getName()));
        }
    }
    return obj;
}