java对象转map
/**
* java对象转map
* @param obj
* @return
* @throws IllegalAccessException
* @throws IllegalArgumentException
*/
public static Map<String,Object> obj2Map(Object obj) throws Exception {
Map<String,Object> result = new HashMap<String,Object>();
//一些基础引用类型
List<String> baseType = Arrays.asList(new String[]{
"java.lang.Boolean",
"java.lang.Byte",
"java.lang.Character",
"java.lang.Double",
"java.lang.Float",
"java.lang.Integer",
"java.lang.Long",
"java.lang.Short",
"java.lang.String",
"java.math.BigDecimal"
});
Class<?> clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
for(int i = 0,len = fields.length; i<len; i++) {
fields[i].setAccessible(true);
if(baseType.contains(fields[i].getType().getName())) {
//类型判断,基本类型判断、基础引用类型判断、数组判断
result.put(fields[i].getName(), fields[i].get(obj));
} else if(isBaseArray(fields[i].get(obj))) {
//数组
result.put(fields[i].getName(), fields[i].get(obj));
} else {
Object value = fields[i].get(obj);
result.put(fields[i].getName(), obj2Map(value));
}
}
return result;
} private static Boolean isBaseArray(Object obj) {
if(obj instanceof Integer[] || obj instanceof int[]) {
return true;
}
if(obj instanceof Boolean[] || obj instanceof boolean[]) {
return true;
}
if(obj instanceof Byte[] || obj instanceof byte[]) {
return true;
}
if(obj instanceof Character[] || obj instanceof char[]) {
return true;
}
if(obj instanceof Double[] || obj instanceof double[]) {
return true;
}
if(obj instanceof Float[] || obj instanceof float[]) {
return true;
}
if(obj instanceof Long[] || obj instanceof long[]) {
return true;
}
if(obj instanceof Short[] || obj instanceof short[]) {
return true;
}
if(obj instanceof String[]) {
return true;
}
if(obj instanceof BigDecimal[]) {
return true;
}
if("java.util.ArrayList".equals(obj.getClass().getName())) {
return true;
}
return false;
}
java对象转map的更多相关文章
- Java对象与Map间相互转换
将Java对象转为一个Map,以及将map转为对应Java对象,代码如下: public class BeanMapUtil { private static ConcurrentHashMap< ...
- java 对象转Map方法Demo
/** * 用于对Object进行解析并且转换成Map键值对的形式 * */ public class ObjectUtils { private static final String JAVAP ...
- java对象与map对象相互转换
/** * 使用org.apache.commons.beanutils进行转换 */ class A { public static Object mapToObject(Map<String ...
- JAVA中将对象转为Map类型
之前讲过将Map转为JAVA对象的文章,那么问题来了,如果要把JAVA对象转为Map,又该怎么操作呢?这里亲测了2个方法可行,但目前这2个方法都是基于简单JAVA Bean的情况(即Bean中不能嵌套 ...
- java中遍历map对象的多种方法
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有ma ...
- Bean-Query 一个把对象转换为Map的Java工具库
刚开源了一个经过完整測试的Java工具类. 地址例如以下: https://github.com/Jimmy-Shi/bean-query 使用说明例如以下: Bean-query Click Her ...
- JAVA中利用反射机制进行对象和Map相互转换的方法
JAVA的反射机制主要作用是用来访问对象的属性.方法等等.所以,JAVA中对象和Map相互转换可以利用JAVA的反射机制来实现.例子如下: 一.对象转Map的方法 public static Map& ...
- string 转 java对象、转map的方式
1.使用fastJson 将String转 map: String out; Object succesResponse = JSON.parse(out); //先转换成Object Map ...
- map转java对象
pom依赖: <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons ...
随机推荐
- [问题记录]cocos的lua绑定安装pyyaml报错
描述:按照readme中的文档操作报错,提示python2.7没有安装,但是确实已经安装了,而且也设置环境变量成功了. 解决: 在D盘新建register.py的文件,内容如下: # # script ...
- linux系统参数
vm.swappiness = 清理掉cache给新的程序用当然可以, 但也带来了新的问题, 也就是如果这些(原来cache里的)数据还要使用, 又得重新cache. 产生了新的IO, 新的wait. ...
- Realtek无线网卡对于Ubuntu的WiFi不支持的处理办法
1.应急办法:查询rfkill list all,可以看到ideapad_laptop的无线被物理关闭,可是博主的笔记本根本没这个键位,所以执行sudo modprobe -r ideapad_lap ...
- DBMS_SQLTUNE使用方法
SQL调优工具包DBMS_SQLTUNE的使用方法 oracle 提供了优化建议功能包DBMS_SQLTUNE,该包可以帮助我们分析SQL,并提供优化建议. 原有执行计划alter session s ...
- 【深入理解JAVA虚拟机】第一部分.走进Java
Java技术体系 如果仅从传统意义上来看,Sun官方所定义的Java技术体系包括以下几个组成部分:Java程序设计语言各种硬件平台上的Java虚拟机Class文件格式Java API类库来自商业机构和 ...
- SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解
(1) 在SAP CRM里创建一个Lead后,会观察到有一个Opportunity自动生成,这是通过什么后台逻辑实现的呢? 检查前台日志或者后台事务码SLG1,发现有很多属于用户WF-BATCH的日志 ...
- 50. Pow(x, n) (recursion)
Implement pow(x, n), which calculates x raised to the power n (xn). Example 1: Input: 2.00000, 10 Ou ...
- 记录两篇关于linux设置ssh登录 和NAT网络模式下访问
https://blog.csdn.net/java_dotar_01/article/details/76942563 https://blog.csdn.net/jiuduan2009/artic ...
- Java 学习笔记1
最近开始学习Java. <%@ page language="java" import="java.util.*" pageEncoding=" ...
- tp3.2替换模板中如果需要替换的图片在css样式表中怎么办?
因为标签中的 style 定义的样式可直接覆盖 css样式表中定义的样式,所以可以在要替换的标签中用 style 直接定义样式,具体代码如下: <div class="aboutbg& ...