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 ...
随机推荐
- IEEP部署企业级网络工程-网络故障-环路故障
网络故障 1.环路故障 概念 1).以太网是一个支持广播的网络, 在没有环路的环境中,广播报文在网络中以泛洪的形式被送达到网络的第一个角落,以保证每个设备都能够接受到它.每台二层设备在接收到广播报文以 ...
- 文本处理三剑客之 Sed ——高级编辑命令
本篇介绍sed的高级编辑命令 高级编辑命令 P:打印模式空间开端至\n内容,并追加到默认输出之前 n: 读取匹配到的行的下一行覆盖至模式空间 N:读取匹配到的行的下一行追加至模式空间 h: 把模式空间 ...
- easyui学习笔记4—panel的实现
这篇看看easyui是怎么实现panel的,就是类似一个容器,里面可以装具体内容或者其他的easyui控件. 1.这里先看看引用的资源文件 <link rel="stylesheet& ...
- Intellij IDEA 代码中类非全路径显示
- Django 数据模型的字段列表整理
一个模型最重要也是唯一必需的部分,是它定义的数据库字段. 字段名称限制: 1.一个字段名不能是一个Python保留字,因为那样会导致一个Python语法错误. 2.一个字段名不能包含连续的一个以上的下 ...
- Struts2注解 及 约定优于配置
Struts2注解 1 Struts2注解的作用 使用注解可以用来替换struts.xml配置文件!!! 2 导包 必须导入struts2-convention-plugin-2.3.15.jar包, ...
- [AHOI2004]数字迷阵
嘟嘟嘟 应该算一道结论题吧. 首先很明显的一点,就是对于ai,j,我们只用求出ai,1就行了,剩下的就是斐波那契和矩阵快速幂的事. 至于如何求ai,1,用两种方法,但是哪一个我都不懂为啥,网上也没有解 ...
- 20165214 2018-2019-2 《网络对抗技术》Exp6 信息搜集与漏洞扫描 Week9
<网络对抗技术>Exp6 信息搜集与漏洞扫描 Week9 一.实验目标与内容 1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应用 使用搜索 ...
- spring使用 hibernate jpa JpaRepository
使用JpaRepository需要两个架包: <dependency> <groupId>org.springframework.data</groupId> &l ...
- 用javascript编写简单银行取钱存钱流程(函数)
const readline = require('readline-sync')//引用readline-sync let arr = [[], []]; //登陆 let add = functi ...