对象属性封装到map中

package cn.itsource.crm.utils;

import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.BeanUtils;

public class CommUtil {

    /**
     * 把指定的复杂对象属性,按照指定的内容,封装到新的map中
     * @param source 目标对象
     * @param ps     需要封装到map中的属性
     * @return
     */
    public static Map<String, Object> obj2map(Object source, String[] ps) {
        Map<String, Object> map = new HashMap<>();
        if (source == null)
            return null;
        if (ps == null || ps.length < 1) {
            return null;
        }
        for (String p : ps) {
            PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(
                    source.getClass(), p);
            if (sourcePd != null && sourcePd.getReadMethod() != null) {
                try {
                    Method readMethod = sourcePd.getReadMethod();
                    if (!Modifier.isPublic(readMethod.getDeclaringClass()
                            .getModifiers())) {
                        readMethod.setAccessible(true);
                    }
                    Object value = readMethod.invoke(source, new Object[0]);
                    map.put(p, value);
                } catch (Exception ex) {
                    throw new RuntimeException(
                            "Could not copy properties from source to target",
                            ex);
                }
            }
        }
        return map;
    }

}
时间: 2024-10-14 08:38:43

对象属性封装到map中的相关文章

ASP.NET MVC之表单集合数据自动绑定到对象属性(集合)中

前言 之前没遇到过这个问题,在项目中遇到这个问题时想法挺好,按照流程走下去,结果事与愿违,于是开始探索着解决方案,接下来我们来看看这个问题,早已经明了的童鞋请绕道,此文仅供未遇到的童鞋提供一种解决方案. 话题 首先我们来看看整个问题的出现,介绍一下问题的背景. public class Blog { public string BlogName { get; set; } public string BlogAddress { get; set; } public List<Article>

unreal3对象属性自动从配置文件中加载的机制

unrealscript中有两个与属性自动配置相关的关键字: config/globalconfig 当把它们应用于属性时,对象在创建后,该属性的初始值会被自动设置为相对应ini文件中的值. 举例来说,如有一个类: class HNet extends Object config(game) native(net); //var globalconfig string host;var config string host; function test() { `Log("HNet test,

对象变化影响map中的数据

public static void main(String[] args) { Person p = new Person("tom","15"); Map<String,Person> map2 = new HashMap<>(); Map<String,Person> map3 = new HashMap<>(); map2.put("m2", p); map3.put("m3&qu

JS对象属性中get/set与getter/setter是什么

在js属性描述符这部分有几个较难理解的名词概念,本文旨在描述对它们的理解,主要包括:[[Get]]/[[Put]].get/set.getter/setter几个概念的阐述,数据属性和访问器属性. 属性 首先我们要搞清楚属性的概念,属性是存储在特定命名位置的值,是对象的内容,属性并不直接存储在对象容器内部.属性有两种类型:数据属性和访问器属性.属性具备了属性描述符,用来描述属性拥有的特性. 属性描述符 属性描述符用来描述属性特性的(只有在内部才能用的特性),配置属性是否可读,是否可写,是否可枚举

java bean 对象属性复制框架BeanMapping-01-入门案例

项目简介 Bean-Mapping 用于 java 对象属性赋值. 项目中经常需要将一个对象的属性,赋值到另一个对象中. 常见的工具有很多,但都多少不够简洁,要么不够强大. 特性 支持对象属性的浅拷贝 变更日志 变更日志 快速开始 准备 JDK1.8 及其以上版本 Maven 3.X 及其以上版本 maven 项目依赖 <dependency> <groupId>com.github.houbb</groupId> <artifactId>bean-mapp

struts2获取表单数据之 属性封装 模型驱动 表达式封装 对象封装到list集合 对象封装到map集合 五种方便的封装方式

一.属性封装 属性封装是在action里面设定属性值,属性名字一定要和表单中的name一样,action中extends ActionSupport demo1.jsp: <body> This is my login JSP page. <br> <form action="demo1.action" method="post" > username<input type="text" name=&qu

ArcGIS API for Silverlight map中添加graphic对象(文字、几何图形、图片)

Map中的图形绘制 1.说明 图形绘制首先需要创建一个 GraphicsLayer,然后将 Graphic 添加上去以显示数据.多数情况下,你将由通过执行查询返回的结果.在地图上绘制图形等方式得到的几何体生成 Graphic. 添加 Graphic 的主要步骤包括:1) 获取添加 Graphic 的目标 GraphicsLayer:2) 创建或者获取 Graphic:3) 设置 Graphic 的 Geometry 属性:4) 为 Graphic 应用符号:5) 将 Graphic 添加到 Gr

js 中对象--属性相关操作

查询属性: 可以用 对象.属性 来查询属性和属性方法               或者                    对象[“属性”]  来查询属性和属性方法 演示代码: 1 <script> 2 var obj ={ 3 username:"ziksang", 4 age:22, 5 addr:"北京", 6 say:function(){ 7 return "我的名字叫 "+this.username //解析this,此

JavaScript 中关于Date的内置对象属性和方法的总结

Date 属性: 1.constructor    所建立对象的函数参考 2.prototype      能够为对象加入的属性和方法 方法: 1.getDay()    返回一周中的第几天(0-6) 2.getYear()    返回年份.2000年以前为2位,2000(包含)以后为4位 3.getFullYear()     返回完整的4位年份数 4.getMonth()      返回月份数(0-11) 5.getDate()       返回日(1-31) 6.getHours()