JAVA的类转map的工具类,网络请求里面用的到

本文介绍了一种利用Java反射机制将对象属性转换为HashMap的方法,并提供了两种不同的实现方式:一种适用于一般情况,另一种则专门针对日期类型的字段进行格式化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.wbm.app.utils;

import com.wbm.app.business.model.BaseNotify;

import org.json.JSONException;
import org.json.JSONObject;

import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;

/**
 * Created by Administrator on 2016/10/11.
 */

public class HashMapUtil {
    public static HashMap<String,String> getHashMap(Object object,String classname){
        HashMap<String,String> map = new HashMap<String,String>();
        try {
            Class clazz = Class.forName(classname);//根据类名获得其对应的Class对象 写上你想要的类名就是了 注意是全名 如果有包的话要加上 比如java.Lang.String
            Object obj = clazz.newInstance();//默认用空参的构造方法创建的对象
            Field[] fields = clazz.getDeclaredFields();//根据Class对象获得属性 私有的也可以获得
            String key=null;
            String value = null;

            for(Field f : fields) {
                //value = f.getType().getName();//打印每个属性的类型名字
                f.setAccessible(true); //设置些属性是可以访问的
                Object o = f.get(object);//打印每个属性的类型名字
                //只有在属性的值不是空的时候才获取。
                if(o!=null){
                    value = o.toString();
                    key = f.getName();
                    map.put(key,value);
                }

            }
        } catch(Exception e) {
            e.printStackTrace();
        }


        return map;
    }

    public static HashMap<String,String> getHashMapFormatDate(Object object,String classname){
        HashMap<String,String> map = new HashMap<String,String>();
        try {
            Class clazz = Class.forName(classname);//根据类名获得其对应的Class对象 写上你想要的类名就是了 注意是全名 如果有包的话要加上 比如java.Lang.String
            Object obj = clazz.newInstance();//默认用空参的构造方法创建的对象
            Field[] fields = clazz.getDeclaredFields();//根据Class对象获得属性 私有的也可以获得
            String key=null;
            String value = null;

            for(Field f : fields) {
                //value = f.getType().getName();//打印每个属性的类型名字
                f.setAccessible(true); //设置些属性是可以访问的
                Object o = f.get(object);//打印每个属性的类型名字
                //只有在属性的值不是空的时候才获取。

                if(o!=null){
                    //如果类型是date的类型的,那么转化为java.util.相应的格式
                    String typename = f.getType().getName();
                    if("java.util.Date".equals(typename)){
                        Date date = (Date)o;
                        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        String formatedDate = format.format(date);
                        value = formatedDate;
                    }
                    else
                        value = o.toString();


                    key = f.getName();
                    map.put(key,value);
                }

            }
        } catch(Exception e) {
            e.printStackTrace();
        }


        return map;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值