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 ...
随机推荐
- 【Leetcode】【Medium】Combination Sum
Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C wher ...
- 【Leetcode】【Medium】Subsets
Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be ...
- OSPF-DR与BDR的选举及作用
IERS-DR与BDR的选举及作用 一.问题引出 在运行OSPF的MA网络中包括广播型和NBMA网络会存在两个问题: 1).在一个有n个路由器的网络中,会形成(n*(n-1))/2邻居关系. 2).邻 ...
- Bash命令行 bash &> >& Bash One-Liners Explained
Bash One-Liners Explained, Part I: Working with files https://catonmat.net/bash-one-liners-explained ...
- 文本处理三剑客之 Sed ——高级编辑命令
本篇介绍sed的高级编辑命令 高级编辑命令 P:打印模式空间开端至\n内容,并追加到默认输出之前 n: 读取匹配到的行的下一行覆盖至模式空间 N:读取匹配到的行的下一行追加至模式空间 h: 把模式空间 ...
- vscode:配置git
1.下载git,并找到安装git的文件位置,并找到git文件夹下面的Bin文件夹 2.配置环境变量 位置:右击‘计算机’->属性->高级系统设置->环境变量 最后点击确定即可 ...
- C#内存复制结构
C++中定义结构如下,需要转化成C#的结构 typedef struct tagNET_DVR_CID_ALARM{ DWORD dwSize; BYTE sCIDCode[CID_COD ...
- Mutual Training for Wannafly Union #2
codeforces 298A. Snow Footprints 分类讨论三种情况: ①..RRRRRR… ②..LLLLLLL… ③..RRRLLLL.. //AC by lwq: #includ ...
- Cacti监控mysql数据库server实现过程
前言:cactiserver端安装请參考:http://blog.csdn.net/mchdba/article/details/27120605 1 先在cactiserver端安装mysql模板 ...
- MyBatis(3)开发dao方法
本次全部学习内容:MyBatisLearning SqlSession SqlSession是一个面向用户(程序员)的接口. SqlSession中提供了很 ...