定制网站【Java对象转换】002- Java 对象与 Map 互转

文章目录

【Java对象转换】002- Java 对象与 Map 互转

一、Java 对象与 Map 概述

1、Java 对象

  • Java对象是数据定制网站和处理可用数据的过程的组合;
  • 对象既有状态又有行为 。 在Java中,定制网站使用关键字“ new”创建对象;
  • 定制网站对象是从称为类的模板创建的;
  • 定制网站对象是类的实例。

2、Map

定制网站参考本人文章:使用详解 https://blog.csdn.net/qq_29689343/article/details/109853787

二、Java 对象与 Map 互转

定制网站下面的工具类在具体使定制网站用的时候需要做具体调整,定制网站比如捕捉异常!

1、使用 commons. 转换

第一步:在 pom.xml 定制网站下引入依赖

<dependency>    <groupId>commons-beanutils</groupId>    <artifactId>commons-beanutils</artifactId>    <version>1.9.4</version></dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

第二步:写个工具类

package com.zibo.study.object_switch.beanutils;import org.apache.commons.beanutils.BeanMap;import org.apache.commons.beanutils.BeanUtils;import java.util.Map;public class ObjectAndMapUtil {    private ObjectAndMapUtil() {}    // map 转 java 对象    public static <T> T mapToObject(Map<String, Object> map, Class<T> clazz)            throws Exception {        if (map == null) {            return null;        }        T t = clazz.newInstance();        BeanUtils.populate(t, map);        return t;    }    // java 对象转 map    public static Map<?, ?> objectToMap(Object obj) {        if (obj == null) return null;        return new BeanMap(obj);    }}
  • 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

第三步:代码演示

package com.zibo.study.object_switch.beanutils;import java.util.Arrays;import java.util.HashMap;import java.util.Map;public class Main {    public static void main(String[] args) {        // 1、创建 Java 对象        Dog dog = new Dog("瓦豆", 2, 20.5, Arrays.asList("吃骨头", "玩球"));        // 2、使用工具类转 map        System.out.println("2、使用工具类转 map");        Map<?, ?> dogMap = ObjectAndMapUtil.objectToMap(dog);        System.out.println(dogMap.get("name"));        System.out.println(dogMap.get("age"));        System.out.println(dogMap.get("weight"));        System.out.println(dogMap.get("hobbies"));        // 3、使用工具类转 object        System.out.println("3、使用工具类转 object");        try {            Map<String, Object> map = new HashMap<>();            map.put("name", "瓦豆");            map.put("age", 2);            map.put("weight", 20.5);            map.put("hobbies", Arrays.asList("吃骨头", "玩球"));            Dog mapToDog = ObjectAndMapUtil.mapToObject(map, Dog.class);            // Dog mapToDog = ObjectAndMapUtil.mapToObject((Map<String, Object>) dogMap, Dog.class);            System.out.println(mapToDog);        } catch (Exception e) {            e.printStackTrace();        }    }}
  • 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

第四步:运行结果

2、使用工具类转 map瓦豆220.5[吃骨头, 玩球]3、使用工具类转 object(中间忽略了一些日志)Dog(name=瓦豆, age=2, weight=20.5, hobbies=[吃骨头, 玩球])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2、使用Introspector转换

第一步:写个工具类

package com.zibo.study.object_switch.beanutils;import java.beans.BeanInfo;import java.beans.IntrospectionException;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;public class ObjectAndMapUtil2 {    // map 转 java 对象    public static <T> T mapToObject(Map<String, Object> map, Class<T> clazz) throws IntrospectionException, InstantiationException, IllegalAccessException, InvocationTargetException {        if (map == null) return null;        T t = clazz.newInstance();        BeanInfo beanInfo = Introspector.getBeanInfo(t.getClass());        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();        for (PropertyDescriptor property : propertyDescriptors) {            Method setter = property.getWriteMethod();            if (setter != null) setter.invoke(t, map.get(property.getName()));        }        return t;    }    // java 对象转 map    public static Map<String, Object> objectToMap(Object obj) throws IntrospectionException, InvocationTargetException, IllegalAccessException {        if (obj == null) return null;        Map<String, Object> map = new HashMap<>();        BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());        PropertyDescriptor[] propertyDescriptors = beanInfo                .getPropertyDescriptors();        for (PropertyDescriptor property : propertyDescriptors) {            String key = property.getName();            if (key.compareToIgnoreCase("class") == 0) continue;            Method getter = property.getReadMethod();            Object value = getter != null ? getter.invoke(obj) : null;            map.put(key, value);        }        return 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
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

第二步:代码演示

package com.zibo.study.object_switch.beanutils;import java.util.Arrays;import java.util.HashMap;import java.util.Map;public class Main {    public static void main(String[] args) throws Exception {        // 1、创建 Java 对象        Dog dog = new Dog("瓦豆", 2, 20.5, Arrays.asList("吃骨头", "玩球"));        // 2、使用工具类转 map        System.out.println("2、使用工具类转 map");        Map<?, ?> dogMap = ObjectAndMapUtil2.objectToMap(dog);        System.out.println(dogMap.get("name"));        System.out.println(dogMap.get("age"));        System.out.println(dogMap.get("weight"));        System.out.println(dogMap.get("hobbies"));        // 3、使用工具类转 object        System.out.println("3、使用工具类转 object");        try {            Map<String, Object> map = new HashMap<>();            map.put("name", "瓦豆");            map.put("age", 2);            map.put("weight", 20.5);            map.put("hobbies", Arrays.asList("吃骨头", "玩球"));            Dog mapToDog = ObjectAndMapUtil2.mapToObject(map, Dog.class);            // Dog mapToDog = ObjectAndMapUtil.mapToObject((Map<String, Object>) dogMap, Dog.class);            System.out.println(mapToDog);        } catch (Exception e) {            e.printStackTrace();        }    }}
  • 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

第三步:运行结果

2、使用工具类转 map瓦豆220.5[吃骨头, 玩球]3、使用工具类转 objectDog(name=瓦豆, age=2, weight=20.5, hobbies=[吃骨头, 玩球])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3、使用reflect转换

第一步:写个工具类

package com.zibo.study.object_switch.beanutils;import java.lang.reflect.Field;import java.lang.reflect.Modifier;import java.util.HashMap;import java.util.Map;public class ObjectAndMapUtil3 {    // map 转 java 对象    public static <T> T mapToObject(Map<String, Object> map, Class<T> clazz) throws InstantiationException, IllegalAccessException {        if (map == null) return null;        T t = clazz.newInstance();        Field[] fields = clazz.getDeclaredFields();        for (Field field : fields) {            int mod = field.getModifiers();            if (Modifier.isFinal(mod) || Modifier.isStatic(mod)) continue;            field.setAccessible(true);            field.set(t, map.get(field.getName()));        }        return t;    }    // java 对象转 map    public static Map<String, Object> objectToMap(Object obj) throws IllegalAccessException {        if (obj == null) return null;        Map<String, Object> map = new HashMap<>();        Field[] declaredFields = obj.getClass().getDeclaredFields();        for (Field field : declaredFields) {            field.setAccessible(true);            map.put(field.getName(), field.get(obj));        }        return 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

第二步:代码演示

package com.zibo.study.object_switch.beanutils;import java.util.Arrays;import java.util.HashMap;import java.util.Map;public class Main {    public static void main(String[] args) throws Exception {        // 1、创建 Java 对象        Dog dog = new Dog("瓦豆", 2, 20.5, Arrays.asList("吃骨头", "玩球"));        // 2、使用工具类转 map        System.out.println("2、使用工具类转 map");        Map<?, ?> dogMap = ObjectAndMapUtil3.objectToMap(dog);        System.out.println(dogMap.get("name"));        System.out.println(dogMap.get("age"));        System.out.println(dogMap.get("weight"));        System.out.println(dogMap.get("hobbies"));        // 3、使用工具类转 object        System.out.println("3、使用工具类转 object");        try {            Map<String, Object> map = new HashMap<>();            map.put("name", "瓦豆");            map.put("age", 2);            map.put("weight", 20.5);            map.put("hobbies", Arrays.asList("吃骨头", "玩球"));            Dog mapToDog = ObjectAndMapUtil3.mapToObject(map, Dog.class);            // Dog mapToDog = ObjectAndMapUtil.mapToObject((Map<String, Object>) dogMap, Dog.class);            System.out.println(mapToDog);        } catch (Exception e) {            e.printStackTrace();        }    }}
  • 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

第三步:运行结果

2、使用工具类转 map瓦豆220.5[吃骨头, 玩球]3、使用工具类转 objectDog(name=瓦豆, age=2, weight=20.5, hobbies=[吃骨头, 玩球])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4、使用 net.sf..beans.BeanMap 转换

第一步:在 pom.xml 下引入依赖

<dependency>    <groupId>cglib</groupId>    <artifactId>cglib</artifactId>    <version>3.3.0</version></dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

第二步:写个工具类

package com.zibo.study.object_switch.beanutils;import com.google.common.collect.Maps;import net.sf.cglib.beans.BeanMap;import java.util.Map;public class ObjectAndMapUtil4 {    // map 转 java 对象    public static <T> T mapToObject(Map<String, Object> map, Class<T> clazz) throws InstantiationException, IllegalAccessException {        T t = clazz.newInstance();        BeanMap beanMap = BeanMap.create(t);        beanMap.putAll(map);        return t;    }    // java 对象转 map    public static Map<String, Object> objectToMap(Object obj) {        if (obj == null) return null;        Map<String, Object> map = Maps.newHashMap();        BeanMap beanMap = BeanMap.create(obj);        for (Object key : beanMap.keySet()) {            map.put(key + "", beanMap.get(key));        }        return 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

第三步:代码演示

package com.zibo.study.object_switch.beanutils;import java.util.Arrays;import java.util.HashMap;import java.util.Map;public class Main {    public static void main(String[] args) {        // 1、创建 Java 对象        Dog dog = new Dog("瓦豆", 2, 20.5, Arrays.asList("吃骨头", "玩球"));        // 2、使用工具类转 map        System.out.println("2、使用工具类转 map");        Map<?, ?> dogMap = ObjectAndMapUtil4.objectToMap(dog);        System.out.println(dogMap.get("name"));        System.out.println(dogMap.get("age"));        System.out.println(dogMap.get("weight"));        System.out.println(dogMap.get("hobbies"));        // 3、使用工具类转 object        System.out.println("3、使用工具类转 object");        try {            Map<String, Object> map = new HashMap<>();            map.put("name", "瓦豆");            map.put("age", 2);            map.put("weight", 20.5);            map.put("hobbies", Arrays.asList("吃骨头", "玩球"));            Dog mapToDog = ObjectAndMapUtil4.mapToObject(map, Dog.class);            // Dog mapToDog = ObjectAndMapUtil.mapToObject((Map<String, Object>) dogMap, Dog.class);            System.out.println(mapToDog);        } catch (Exception e) {            e.printStackTrace();        }    }}
  • 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

第四步:运行结果

2、使用工具类转 map瓦豆220.5[吃骨头, 玩球]3、使用工具类转 objectDog(name=瓦豆, age=2, weight=20.5, hobbies=[吃骨头, 玩球])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

5、使用 json 转换

第一步:在 pom.xml 下引入依赖

<dependency>  <groupId>com.alibaba</groupId>  <artifactId>fastjson</artifactId>  <version>1.2.80</version></dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

第二步:写一个工具类

package com.zibo.study.object_switch.beanutils;import com.alibaba.fastjson.JSONObject;import java.util.Map;public class ObjectAndMapUtil5 {    // map 转 java 对象    public static <T> T mapToObject(Map<String, Object> map, Class<T> clazz) {        String jsonStr = JSONObject.toJSONString(map);        return JSONObject.parseObject(jsonStr, clazz);    }    // java 对象转 map    public static Map<String, Object> objectToMap(Object obj) {        if(obj == null) return null;        String jsonStr = JSONObject.toJSONString(obj);        return JSONObject.parseObject(jsonStr);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

第三步:代码演示

package com.zibo.study.object_switch.beanutils;import java.util.Arrays;import java.util.HashMap;import java.util.Map;public class Main {    public static void main(String[] args) {        // 1、创建 Java 对象        Dog dog = new Dog("瓦豆", 2, 20.5, Arrays.asList("吃骨头", "玩球"));        // 2、使用工具类转 map        System.out.println("2、使用工具类转 map");        Map<?, ?> dogMap = ObjectAndMapUtil5.objectToMap(dog);        System.out.println(dogMap.get("name"));        System.out.println(dogMap.get("age"));        System.out.println(dogMap.get("weight"));        System.out.println(dogMap.get("hobbies"));        // 3、使用工具类转 object        System.out.println("3、使用工具类转 object");        try {            Map<String, Object> map = new HashMap<>();            map.put("name", "瓦豆");            map.put("age", 2);            map.put("weight", 20.5);            map.put("hobbies", Arrays.asList("吃骨头", "玩球"));            Dog mapToDog = ObjectAndMapUtil5.mapToObject(map, Dog.class);            // Dog mapToDog = ObjectAndMapUtil.mapToObject((Map<String, Object>) dogMap, Dog.class);            System.out.println(mapToDog);        } catch (Exception e) {            e.printStackTrace();        }    }}
  • 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

第四步:运行结果

2、使用工具类转 map瓦豆220.5["吃骨头","玩球"]3、使用工具类转 objectDog(name=瓦豆, age=2, weight=20.5, hobbies=[吃骨头, 玩球])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

三、 后记

暂仅记录这么多,后续若有更好的方法会进行补充!

参考文章:https://blog.csdn.net/liuyunyihao/article/details/86597002

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发