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 ...
随机推荐
- ACM HDU 1755 -- A Number Puzzle
A Number Puzzle Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 【深入理解JAVA虚拟机】第二部分.内存自动管理机制.3.垃圾收集器与内存分配策略
1.学习目的 当需要排查各种内存溢出. 内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节. Java内存运行时区域的各个部分,其中程序计数 ...
- asp.net mvc 4.0常见的几个问题
看书的时候遇到很多不知所云的错误,都是在网上找到的解决方法,没办法,从asp.net到mcv很多的新技术,没有一点思路,只能在网上搜罗了. 1.更新产品不成功 更新产品的时候一直不能更新成功,但是很奇 ...
- Spring Framework5.0 学习(2)-- Quick Start
官网:https://projects.spring.io/spring-framework/ Spring Framework 5.x 要求 JDK 1.8以上 1.0 在(1)的基础上,给bu ...
- PHP------面向对象的特性
面向对象的特性 一.面向对象有三大特性: 封装.继承.多态.(非常重要,第一要记住!!!!!!!!!!) 二.封装 封装就是用来做类的,把一个类封装起来.做类不能随便的做.我们做类不能随便去写一个类, ...
- 4.spring:@Profile,AOP
Profile: 可以根据当前的环境,动态激活和切换一系列的组件功能 指定组件在那个环境下才能被注册到容器中,不指定任何环境下都能注册到 1.加了环境标识的bean只有环境激活的时候才能注册到容器中 ...
- 记录一下xcode9 添加文件夹的顺序
右击->Add Files to YourProject->弹出文件对话框,点击Options->选择:Copy Items if needed和Create Groups 要选择O ...
- Java 内部类综述
转载自:https://blog.csdn.net/justloveyou_/article/details/53245561
- torch.backend.cudnn.benchmark
大部分情况下,设置这个 flag 可以让内置的 cuDNN 的 auto-tuner 自动寻找最适合当前配置的高效算法,来达到优化运行效率的问题. 一般来讲,应该遵循以下准则: 如果网络的输入数据维度 ...
- px,rem,em的区别
PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位: 3. Firefox能够调整px和em,rem,但是96%以上 ...