💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
~~~ import java.lang.reflect.Field; import java.lang.reflect.Method; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * HashMap与Bean互转工具类 * * @author hailan * @time 2015-10-12下午05:56:34 */ public class HashMapBeanTools { /** * HashMap转换成JavaBean * * @author hailan * @time 下午05:57:16 * @param map * @param cls * @return */ public static Object hashMapToJavaBean(HashMap<?,?> map, Class<?> cls) { Object obj = null; try { obj = cls.newInstance(); } catch (Exception e) { e.printStackTrace(); } // 取出bean里的所有方法 Method[] methods = cls.getMethods(); for (int i = 0; i < methods.length; i++) { // 取方法名 String method = methods[i].getName(); // 取出方法的类型 Class<?>[] cc = methods[i].getParameterTypes(); if (cc.length != 1) continue; // 如果方法名没有以set开头的则退出本次for if (!method.startsWith("set") ) continue; // 类型 String type = cc[0].getSimpleName(); try { // Object value = method.substring(3,4).toLowerCase().concat(method.substring(4)); // 如果map里有该key if (map.containsKey(value)) { // 调用其底层方法 setValue(type, map.get(value), i, methods, obj); } } catch (Exception e) { e.printStackTrace(); } } return obj; } /** * 调用底层方法设置值 * * @author hailan * @time 下午06:01:56 * @param type * @param value * @param i * @param method * @param bean * @throws Exception */ private static void setValue(String type, Object value, int i, Method[] method, Object bean) throws Exception { if (value != null && !value.equals("")) { try { if (type.equals("String")) { // 第一个参数:从中调用基础方法的对象 第二个参数:用于方法调用的参数 method[i].invoke(bean, new Object[] { value }); } else if (type.equals("int") || type.equals("Integer")) { method[i].invoke(bean, new Object[] { new Integer("" + value) }); } else if (type.equals("BigDecimal")) { method[i].invoke(bean, new Object[] { new BigDecimal((String)value) }); } else if (type.equals("long") || type.equals("Long")) { method[i].invoke(bean, new Object[] { new Long("" + value) }); } else if (type.equals("boolean") || type.equals("Boolean")) { method[i].invoke(bean, new Object[] { Boolean.valueOf("" + value) }); } else if (type.equals("Date")) { Date date = null; if (value.getClass().getName().equals("java.util.Date")) { date = (Date) value; } else { //根据文件内的格式不同修改,时间格式太多在此不做通用格式处理。 if (value.toString().length() > 10){ String format = "yyyy-MM-dd HHmmss"; date = parseDateTime("" + value, format); } else if (value.toString().length() == 10){ String format = "yyyy-MM-dd"; date = parseDateTime("" + value, format); } else if (value.toString().length() == 8){ String format = "yyyyMMdd"; date = parseDateTime("" + value, format); } else if (value.toString().length() == 14){ String format = "yyyyMMddHHmmss"; date = parseDateTime("" + value, format); }else if (value.toString().length() == 6){ String format = "HHmmss"; date = parseDateTime("" + value, format); } } if (date != null) { method[i].invoke(bean, new Object[] { date }); } } else if (type.equals("byte[]")) { method[i].invoke(bean, new Object[] { new String(value + "").getBytes() }); } } catch (Exception e) { e.printStackTrace(); throw e; } } } /** * 日期格式转换 * * @author hailan * @time 下午06:02:59 * @param dateValue * @param format * @return */ private static Date parseDateTime(String dateValue, String format) { SimpleDateFormat obj = new SimpleDateFormat(format); try { return obj.parse(dateValue); } catch (Exception e) { e.printStackTrace(); } return null; } public static Map<String, Object> hashJavaBeanToMap(Object ojt) { Class<?> cls = ojt.getClass(); Field[] field = cls.getDeclaredFields(); HashMap<String, Object> mapbean = new HashMap<String, Object>(); for(int i=0;i<field.length;i++){ Field f = field[i]; f.setAccessible(true); try { mapbean.put(f.getName(), f.get(cls)); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } return mapbean; } } ~~~