首页 > 编程语言 >Java 对象转Map,Java Map转对象方法

Java 对象转Map,Java Map转对象方法

时间:2023-09-25 23:45:05浏览次数:37  
标签:userName Map Java String 对象 mobile idNo public

Java 对象转Map,Java Map转对象方法

import com.alibaba.fastjson.JSON;
import org.apache.commons.beanutils.BeanMap;
import org.apache.commons.beanutils.BeanUtils;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;

public class UserInfo {
    private String userName;
    private String idNo;
    private String mobile;
    private String sign;

    public String getSign() {
        return sign;
    }

    public void setSign(String sign) {
        this.sign = sign;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getIdNo() {
        return idNo;
    }

    public void setIdNo(String idNo) {
        this.idNo = idNo;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    private static Map<String, String> objectToMap(Object object) {
        Map<String,String> map = new HashMap<>();
        Field[] fields = object.getClass().getDeclaredFields();
        for (Field field : fields) {
            try {
                field.setAccessible(true);
                map.put(field.getName(), String.valueOf(field.get(object)));
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
        return map;
    }

    public static void mapToObject(Map<String, Object> map, Object obj) throws Exception {
        if (map == null) {
            return;
        }
        Class<?> cls = obj.getClass();
        for (Field field : cls.getDeclaredFields()) {
            String name = field.getName();
            Object value = map.get(name);
            if (value != null) {
                field.setAccessible(true);
                field.set(obj, value);
            }
        }
    }

    public static void main(String[] args) {
        UserInfo userInfo = new UserInfo();
        userInfo.setMobile("19966667777");
        userInfo.setUserName("张三");
        userInfo.setIdNo("463300122545556699");
        //对象转map1={mobile=19966667777, sign=null, userName=张三, idNo=463300122545556699}
        Map map1 = objectToMap(userInfo);
        System.out.println("对象转map1=" + map1);

        UserInfo user1 = new UserInfo();
        try {
            mapToObject(map1,user1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //map1转对象={"idNo":"463300122545556699","mobile":"19966667777","sign":"null","userName":"张三"}
        System.out.println("map1转对象=" + JSON.toJSONString(user1));


        String json = JSON.toJSONString(userInfo);
        Map map2 = JSON.parseObject(json,Map.class);
        //对象转map2={mobile=19966667777, userName=张三, idNo=463300122545556699}
        System.out.println("对象转map2=" + map2);

        String json2 = JSON.toJSONString(map2);
        UserInfo user2 = JSON.parseObject(json2,UserInfo.class);
        //map2转对象={"idNo":"463300122545556699","mobile":"19966667777","userName":"张三"}
        System.out.println("map2转对象=" + JSON.toJSONString(user2));

        Map<String, String> map3 = null;
        try {
            map3 = BeanUtils.describe(userInfo);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
        //对象转map3={mobile=19966667777, sign=null, userName=张三, class=class com.example.core.mydemo.scooter.UserInfo, idNo=463300122545556699}
        System.out.println("对象转map3=" + map3);

//        Map map4 = new HashMap();
//        BeanMap map4 = new BeanMap(userInfo);
        UserInfo testObj = new UserInfo();
        try {
            BeanUtils.populate(testObj,map3);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        //map3转对象={"mobile":"19966667777","userName":"张三","idNo":"463300122545556699"}
        System.out.println("map3转对象=" + JSON.toJSON(testObj));

    }
}

需要引入的jar包文件:

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.62</version>
        </dependency>
		<dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.1</version>
        </dependency>

 

标签:userName,Map,Java,String,对象,mobile,idNo,public
From: https://www.cnblogs.com/oktokeep/p/17729158.html

相关文章

  • Java之转换流的详细解析
    2.转换流2.1字符编码和字符集字符编码计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码......
  • RAS非对称加解密-RAS加解密和签名和验签,密钥生成器(java代码)
    RAS非对称加解密-RAS加解密和签名和验签,密钥生成器(java代码)RSA算法是一种非对称加解密算法。服务方生成一对RSA密钥,即公钥+私钥,将公钥提供给调用方,调用方使用公钥对数据进行加密后,服务方根据私钥进行解密。1.RAS密钥生成器2.RAS加解密和签名和验签代码13.RAS实现签名......
  • 无涯教程-JavaScript - STANDARDIZE函数
    描述STANDARDIZE函数从以均值和standard_dev为特征的分布返回归一化值。语法STANDARDIZE(x,mean,standard_dev)争论Argument描述Required/OptionalXThevalueyouwanttonormalize.RequiredMeanThearithmeticmeanofthedistribution.RequiredStandard_de......
  • Json输出List集合对象和map对象 JSON格式
    Json输出List集合对象和map对象JSON格式//Json输出List集合对象[{"属性1":["值1"],"属性2":"值2"},{"属性3":["值3"],"属性4":"值4"}]importcom.alibaba.fastjson.JSONObject;importjava.util.ArrayList;impor......
  • 无涯教程-JavaScript - STDEV.P函数
    描述STDEV.P函数根据作为参数给出的总体(忽略逻辑值和文本)来计算标准差。语法STDEV.P(number1,[number2]...)争论Argument描述Required/OptionalNumber1Thefirstnumberargumentcorrespondingtoapopulation.RequiredNumber2...编号参数2到254对应于总体......
  • 盘点 Java 那些已经被淘汰的技术
    引言从07年至今,转眼间接触Java已近16年了,见证了许多Java技术变迁,包括:JavaEE框架,从Sun公司的EJB的没落,到百家混战,再到现在Spring一统天下Web开发,从JSP+JavaBean(Model1),到JSP+Servlet+JavaBean(Model2),再到SSH(Struct+Spring+Hibernate)组合,再再到现在SSM(Sp......
  • 【Java】在树结构中给节点追加数据
    一、功能需求有个树状组件,展示区域层级,每个区域节点需要展示该地区下的统计信息从来没做过,给我整不会了属实是 二、功能分析原型有功能和老系统代码,查看源码后发现的结构框架1、树组件是自己用ul+li封装的,牛逼2、数据加载逻辑是:先加载区域树接口,然后加载区域所有统计......
  • idea java代码注释模板制作 idea类注释模板设置【转载】
    一、类模板设置1、进入设置页面:File-->settings-->Editor-->FileandCodeTemplates-->Files2、设置类、接口、枚举模板信息3、点击Apply应用设置二、方法模板设置1、同样打开设置:File-->settings-->Editor-->LiveTemplates2、新建模板组:命名为userDefine3、选中新建的模板组,新......
  • Python与Java的语法区别
    数据容器/数组/集合Python:对数据容器的操作#对list进行切片,从1开始,4结束,步长1(默认步长为1)my_list=[0,1,2,3,4,5,6]result1=my_list[1:4]print(f"结果1:{result1}")#对tuple进行切片,从头开始,到最后结束,步长1my_tuple=(0,1,2,3,4,5,6)result2=my_tu......
  • Qt 5——对象树及对象树容易出现的内存问题
    对象模型(对象树) 在Qt中创建对象的时候会提供一个Parent对象指针,下面来解释这个parent到底是干什么的。QObject是以对象树的形式组织起来的。当你创建一个QObject对象时,会看到QObject的构造函数接收一个QObject指针作为参数,这个参数就是parent,也就是父对象指针。这相当于,在......