之前讲过将Map转为JAVA对象的文章,那么问题来了,如果要把JAVA对象转为Map,又该怎么操作呢?
这里亲测了2个方法可行,但目前这2个方法都是基于简单JAVA Bean的情况(即Bean中不能嵌套非基本类型的对象)。

1.通过Introspector来实现

    public static Map<String, Object> objectToMap1(Object obj) {
if (obj == null) {
return null;
} Map<String, Object> map = new HashMap<String, Object>();
try {
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);
}
} catch (Exception e) {
e.printStackTrace();
} return map;
}

  
2.通过com.alibaba.fastjson.JSON来实现

    @SuppressWarnings("unchecked")
public static Map<String, Object> objectToMap2(Object obj) { return JSON.parseObject(JSON.toJSONString(obj), Map.class);
}

 以下是测试过程:

    public static void main(String[] args) {
SingleWithdrawCallBackMessage message = new SingleWithdrawCallBackMessage();
message.setAcqSerialNo(2017080100000999L);
message.setBankNo("111111111111112");
message.setErrorMessage("");
message.setFundPayNo("1111111111111112");
message.setOrderTime("2017-08-01 12:00:00");
message.setOutOrderNo("2017080100000001");
message.setPoundageAmount(0L);
message.setStatus(SingleWithdrawStatus.SINGLE_WITHDRAW_SUCCESS.getCode());
message.setWithdrawAmount(500L); Map<String, Object> map = null;
map = objectToMap1(message);
System.out.println(map); Map<String, Object> map2 = objectToMap2(message);
System.out.println(map2);
}

  
输出结果:
{fundPayNo=1111111111111112, poundageAmount=0, orderTime=2017-08-01 12:00:00, bankNo=111111111111112, errorMessage=, acqSerialNo=2017080100000999, withdrawAmount=500, outOrderNo=2017080100000001, status=03}

{fundPayNo=1111111111111112, poundageAmount=0, orderTime=2017-08-01 12:00:00, bankNo=111111111111112, errorMessage=, acqSerialNo=2017080100000999, withdrawAmount=500, outOrderNo=2017080100000001, status=03}

 

JAVA中将对象转为Map类型的更多相关文章

  1. javabean实体类对象转为Map类型对象的方法(转发)

    //将javabean实体类转为map类型,然后返回一个map类型的值 public static Map<String, Object> beanToMap(Object obj) { ...

  2. Java中将对象转换为Map的方法

    将对象转换为Map的方法,代码如下: /** * 将对象转成TreeMap,属性名为key,属性值为value * @param object 对象 * @return * @throws Illeg ...

  3. java中将list、map对象写入文件

    链接地址:http://blog.sina.com.cn/s/blog_4a4f9fb50101p6jv.html     推荐:凤爪女瓜子男怪象该谁反思伦敦房价为什么持续暴涨 × wvqusrtg个 ...

  4. Java中将字符串转为驼峰格式

    本文不再更新,可能存在内容过时的情况,实时更新请移步我的新博客:Java中将字符串转为驼峰格式: 使用CaseUtils 对Java字符串进行转换为驼峰格式: CaseUtils.toCamelCas ...

  5. java 实体对象转Map公共类

    java 实体对象转Map公共类 package org.kxtkx.portal.utils; import java.lang.reflect.Field; import java.util.Ha ...

  6. java中list强转为map类型

    起因:读取数据库文件的测试用例,测试用例需要存放到一个map中,方便下次调用, 读取的内容返回的内容存放在一个list中,并且数据内容是key=value的形式,最开始使用切片方式,做了很多无用功,后 ...

  7. java将对象转map,map转对象工具类

    /** * 将map转换为一个对象 * * @param map * @param beanClass * @return * @throws Exception */ public static O ...

  8. 【JavaScript】JS将Java的Timestamp转为Date类型

    遇到一个小需求,由于要填充日期插件里的数据,前台要把java后台传来的Date类型的数据转成YYYY-MM-DD格式的时间数据.通过json传输,Java的Date类型的数据自动转成了时间戳,例如 “ ...

  9. java字符串转为Map类型:split()方法的应用

    方法一: package com.thinkgem.jeesite.modules.socketTest.demo2; import java.util.HashMap; import java.ut ...

随机推荐

  1. Linux文件系统命令 cp

    命令名:cp 功能:拷贝文件,把一个文件的内容拷贝到另外一个文件中去. eg: cp source_file dist_file renjg@renjg-HP-Compaq-Pro--MT:~$ cp ...

  2. Java基础学习-Collection

    package Collection; import java.util.ArrayList; import java.util.Scanner; /*集合类的特点: * 大小可变 * * Array ...

  3. jsp连接java类出问题

    问题:UserBean cannot be resolved to a type 解决: (1)jdk不匹配(或不存在)     项目指定的jdk为“jdk1.6.0_18”,而当前eclipse使用 ...

  4. <顺序访问><随机访问><HDFS>

    Overview 如果你了解过HDFS,至少看过这句话吧: HDFS is a filesystem designed for storing very large files with stream ...

  5. <Hadoop重装><centos><NameNode失效>

    Overview 记一次真真切切的NameNode单点故障. 学校机房着火之后,刀片机上的四台服务器,唯独就NameNode彻底宕掉了,去机房看了下硬盘都坏了.. 所以只能换一个master咯.基本上 ...

  6. 分类算法的R语言实现案例

    最近在读<R语言与网站分析>,书中对分类.聚类算法的讲解通俗易懂,和数据挖掘理论一起看的话,有很好的参照效果. 然而,这么好的讲解,作者居然没提供对应的数据集.手痒之余,我自己动手整理了一 ...

  7. 3--Selenium环境准备--Eclipse 引入 selenium-server包

    1.下载selenium-server包   selenium-server-standalone包是Seleniumd的核心jar包,其中包含了各种元素定位和调用浏览器的方法.下载jar包后,在ID ...

  8. linux git 安装方法

    最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑.不过,慢慢地有人把它移植到了Windows上.现在,Git可以在Linux.Unix.Mac和Window ...

  9. hadoop day 1

    hadoop是什么? 解决的问题: 海量数据的存储(HDFS):供hbase,mapreduce进行处理 海量数据的分析(MapReduce) 资源管理调度(YARN) 搜索引擎: 爬虫系统+站内搜索 ...

  10. js的调用方式

    1.元素绑定 给具体的元素绑定JS的事件 事件:由用户行为触发的操作(鼠标操作,键盘操作) 语法:<标签 事件函数名="JS代码"> et: onclick:单机事件 ...