package com.bpcrm.util;
import java.lang.reflect.Field;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import com.bpcrm.customer.form.CustomerSendForm;
public class ObjectUtils {
/**
* 将指定对象属性名称和属性值转化为Map键值对
*
* @param obj
* @return
*/
public static HashMap objectToMap(Object obj) throws Exception {
if (obj == null) {
throw new Exception("对象为空");
}
Class clazz = obj.getClass();
HashMap map = new HashMap();
getClass(clazz,map,obj);
HashMap newMap = convertHashMap(map);
return newMap;
}
/**
* 带入一个对象,一个对象中的属性名称,取得该属性的值
* @param obj
* @param strProperty
* @return
* @throws Exception
*/
public static String getPropertyValueFormObject(Object obj,
String strProperty) throws Exception {
if (!StringUtils.isValidateString(strProperty)) {
return "";
}
if (obj == null) {
return "";
}
Class clazz = obj.getClass();
HashMap map = new HashMap();
getClass(clazz,map,obj);
HashMap newMap = convertHashMap(map);
if (newMap == null) {
return "";
} else {
Object objReturn = newMap.get(StringUtils.validateString(strProperty));
if (objReturn==null) {
return "";
} else {
return objReturn.toString();
}
}
}
/**
*
*/
private static void getClass(Class clazz,HashMap map,Object obj) throws Exception{
if(clazz.getSimpleName().equals("Object")){
return;
}
Field[] fields = clazz.getDeclaredFields();
if (fields == null || fields.length <= 0) {
throw new Exception("当前对象中没有任何属性值");
}
for(int i=0;i<fields.length;i++){
fields[i].setAccessible(true);
String name=fields[i].getName();
Object value=fields[i].get(obj);
map.put(name,value);
}
Class superClzz=clazz.getSuperclass();
getClass(superClzz,map,obj);
}
/**
*
* @param map
* @return
* @throws Exception
*/
private static HashMap convertHashMap(HashMap map) throws Exception {
HashMap newMap = new HashMap();
Set keys = map.keySet();
Iterator it = keys.iterator();
while (it.hasNext()) {
Object key = it.next();
convertToString(map.get(key), newMap, key);
}
return newMap;
}
/**
*
* @param value
* @param newMap
* @param key
*/
private static void convertToString(Object value, HashMap newMap, Object key) {
if (value != null) {
Class clazz = value.getClass();
if (isBaseType(clazz)) {
newMap.put(key, value.toString());
} else if (clazz == String.class) {
newMap.put(key, value.toString());
} else if (clazz == Date.class) {
Date date = (Date) value;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
newMap.put(key, sdf.format(date));
} else if (clazz == Timestamp.class) {
Timestamp timestamp = (Timestamp) value;
long times = timestamp.getTime();
Date date = new Date(times);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
newMap.put(key, sdf.format(date));
} else if (clazz == java.sql.Date.class) {
java.sql.Date sqlDate = (java.sql.Date) value;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
newMap.put(key, sdf.format(sqlDate));
} else {
newMap.put(key, value);
}
} else {
newMap.put(key, value);
}
}
/**
*
* @param clazz
* @return
*/
private static boolean isBaseType(Class clazz) {
if (clazz == Integer.class) {
return true;
}
if (clazz == Long.class) {
return true;
}
if (clazz == Double.class) {
return true;
}
if (clazz == Byte.class) {
return true;
}
if (clazz == Float.class) {
return true;
}
if (clazz == Short.class) {
return true;
}
if (clazz == Boolean.class) {
return true;
}
return false;
}
/**
* 测试
*
* @param args
*/
public static void main(String args[]) throws Exception {
System.out.println("132131");
CustomerSendForm user = new CustomerSendForm();
// user.setAge(1);
user.setId("1");
// user.setName("qqqq");
// user.setBirthday(new Date());
// user.setFriedns(new ArrayList());
// user.setHobbies(new String[]{"1","2"});
HashMap map = objectToMap(user);
Set entrys = map.entrySet();
Iterator it = entrys.iterator();
System.out.println("sfsdfsdf");
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}
分享到:
相关推荐
将对象属性转化为map集合的工具类
在Java 8中,将List转换为Map对象是一种非常实用的技术,特别是在处理大规模数据时非常有用。本文将详细介绍在Java 8中将List转换为Map对象的方法,并提供了多种实现方式。 首先,我们需要明确Map的key是什么?在这...
本篇将详细介绍如何在Java中将XML文件转换为Map对象。 首先,我们需要理解XML的基本结构。XML由一系列元素组成,每个元素可以有属性和子元素。在转化过程中,元素的标签将作为Map的键,元素的文本内容将作为值。...
在Java开发中,特别是在使用Spring框架时,将数据库中的数据转换为Map对象是一种常见的操作。这样做可以简化数据处理,使得数据以键值对的形式存储,便于快速查找和使用。Spring框架提供了强大的数据访问抽象,包括...
在实际开发中,我们有时需要将Map对象的数据转换为Java实体对象,以便进行更复杂的操作。本篇文章将深入探讨如何使用Core Java JDK 1.8中的技术来实现这一转换,特别是通过泛型和反射机制。 首先,让我们了解什么是...
在Java开发中,将Java对象转化为JSON(JavaScript Object Notation)格式是常见的需求,尤其是在Web服务和前后端数据交互中。JSON是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。JSON...
首先,你需要创建一个`JAXBContext`实例,然后使用`Marshaller`对象将`Map`对象写入XML字符串。 ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; public String mapToXml(Map, ...
"java对象转对象插件"旨在简化这个过程,提供了一种便捷的方式来将Java对象转换为Map、List、Set或其他对象,提高了开发效率。下面将详细介绍这个插件的工作原理、使用方法及其优势。 首先,Java对象到Map的转换是...
本篇文章将深入探讨如何将Java中的List和Map对象转化为JSON格式,并涉及与AJAX交互的相关知识。 1. **Java JSON库**: 在Java中,我们可以使用多种库来实现对象到JSON的转换,如Jackson、Gson、Fastjson等。这里以...
java后台从数据库读取 数据,封装到list集合,控制层转化为XML格式数据
在大数据处理中,Map常用于将复杂的数据结构转化为便于处理的形式。Map拆分是指将一个大Map分成多个小Map,以便在多台机器上并行处理。这种拆分方法可以显著提高计算效率,因为它允许数据在分布式系统中分散,每台...
而Map是Java集合框架中的一个接口,它存储键值对,提供灵活的数据组织方式。将XML转换为Map,主要是为了方便数据处理和操作。这个过程通常涉及到XML解析和数据映射。 在描述中提到的“递归 XML 转 MAP”,是指XML...
将JSON字符串转化为Map,可以使用`fromJson()`方法: ```java import com.google.gson.Gson; import java.util.Map; String jsonString = "{\"key\":\"value\"}"; Gson gson = new Gson(); Map, Object> map...
例如,`new Gson().toJson(obj)`会将Java对象转化为JSON字符串,而`new Gson().fromJson(jsonStr, YourClass.class)`则能将JSON字符串还原为Java对象。 3. Fastjson:这是阿里巴巴开源的JSON库,以其高性能著称。...
标题中的“map转化为list”指的是在编程中,我们经常需要将Map对象的键值对转换成List对象,以便于进一步处理或展示数据。这个过程通常涉及到Java集合框架中的转换操作,尤其是在处理数据结构时。 在Java中,Map是...
3. **复制属性到Map**:从Bean对象中获取属性值,将这些值放入Map中。键通常是属性名,值是属性值。 4. **将Map添加到新的List中**:每当创建完一个Map后,将其添加到一个新的List<Map>集合中。 5. **返回新的List...
在Java编程中,我们经常需要将JSON字符串转化为Java对象,或者将Java对象转化为JSON字符串,这时就需要用到JSON转化工具类。这个"json 转化工具类"就是为了解决这样的问题。 在Java中,有很多流行的库可以处理JSON...
Java面向对象教程是深入理解Java编程的关键,它涵盖了软件工程中的基本原则,并将其应用于实际编程实践。面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它基于“对象”的概念,这些对象封装了...
此java类实现了对数据表的分类递归树的实现,为本人倾力之作,后期,会发布js版,敬请期待!