大佬教程收集整理的这篇文章主要介绍了JsonUtil JSONObject、JavaBean、Model、list相互转化,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
package com.XXX.XXX.common.util; //上面是包路径 import java.lang.reflect.Field; import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.sql.Date; import java.sql.@R_616_6561@amp; import java.lang.reflect.InvocationTargetException; import java.math.bigdecimal; import java.text.ParseException; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class JsonUtil { /** * JSONObject对象转JavaBean * @param JSONObject * @param JavaBean的class * @return 转换结果(异常情况下返回null) */ public static Object jsonToBean(JSONObject json,Class cls) { Object obj = null; try { obj = cls.newInstance(); // 取出Bean里面的所有方法 Method[] methods = cls.getmethods(); for(int i=0; i < methods.length; i++) { // 取出方法名 String methodName = methods[i].getName(); // 取出方法的类型 Class[] clss = methods[i].getParameterTypes(); if(clss.length != 1) { conTinue; } // 若是方法名不是以set开始的则退出本次循环 if(methodName.indexOf("set") < 0) { conTinue; } // 类型 String type = clss[0].getSimplename(); String key = methodName.subString(3,4).toLowerCase() + methodName.subString(4); // 如果map里有该key if(json.has(key) && json.get(key) != null) { @R_696_6938@ue(type,json.get(key),methods[i],obj); } } } catch (Exception eX) { LogUtil.errorLog(JsonUtil.class,"JSONObject转JavaBean失败",eX); } return obj; } /** * 根据key从JSONObject对象中取得对应值 * @param json * @param key * @return * @throws JSONException */ public static String getString(JSONObject json,String key) throws JSONException { String retVal = null; if(json.isNull(key)) { retVal = ""; } else { retVal = json.getString(key); } return retVal; } /** * 给JavaBean的每个属性设值 * @param type * @param value * @param method * @param bean * @throws IllegalArgumentexception * @throws illegalaccessexception * @throws InvocationTargetException * @throws ParseException */ private static void @R_696_6938@ue(String type,Object value,Method method,Object bean) { if(value != null && !"".equals(value)) { try { if("String".equals(typE)) { method.invoke(bean,new Object[] {value}); } else if("int".equals(typE) || "Integer".equals(typE)) { method.invoke(bean,new Object[] { new Integer(""+value) }); } else if("double".equals(typE) || "Double".equals(typE)) { method.invoke(bean,new Object[] { new Double(""+value) }); } else if("float".equals(typE) || "Float".equals(typE)) { method.invoke(bean,new Object[] { new Float(""+value) }); } else if("long".equals(typE) || "Long".equals(typE)) { method.invoke(bean,new Object[] { new Long(""+value) }); } else if("int".equals(typE) || "Integer".equals(typE)) { method.invoke(bean,new Object[] { new Integer(""+value) }); } else if("Boolean".equals(typE) || "Boolean".equals(typE)) { method.invoke(bean,new Object[] { Boolean.valueOf(""+value) }); } else if("Bigdecimal".equals(typE)) { method.invoke(bean,new Object[] { new Bigdecimal(""+value) }); } else if("Date".equals(typE)) { Class dateType = method.getParameterTypes()[0]; if("java.util.Date".equals(dateType.getName())) { java.util.Date date = null; if("String".equals(value.getClass().getSimplename())) { String time = String.valueOf(value); String format = null; if(time.indexOf(":") > 0) { if(time.indexOf(":") == time.lasTindexOf(":")) { format = "yyyy-MM-dd H:mm"; } else { format = "yyyy-MM-dd H:mm:ss"; } } else { format = "yyyy-MM-dd"; } SimpleDateFormat sf = new SimpleDateFormat(); sf.applyPattern(format); date = sf.parse(timE); } else { date = (java.util.DatE) value; } if(date != null) { method.invoke(bean,new Object[] { date }); } } else if("java.sql.Date".equals(dateType.getName())) { Date date = null; if("String".equals(value.getClass().getSimplename())) { String time = String.valueOf(value); String format = null; if(time.indexOf(":") > 0) { if(time.indexOf(":") == time.lasTindexOf(":")) { format = "yyyy-MM-dd H:mm"; } else { format = "yyyy-MM-dd H:mm:ss"; } } else { format = "yyyy-MM-dd"; } SimpleDateFormat sf = new SimpleDateFormat(); sf.applyPattern(format); date = new Date(sf.parse(timE).getTime()); } else { date = (DatE) value; } if(date != null) { method.invoke(bean,new Object[] { date }); } } } else if("@R_616_6561@amp".equals(typE)) { timestamp timestamp = null; if("String".equals(value.getClass().getSimplename())) { String time = String.valueOf(value); String format = null; if(time.indexOf(":") > 0) { if(time.indexOf(":") == time.lasTindexOf(":")) { format = "yyyy-MM-dd H:mm"; } else { format = "yyyy-MM-dd H:mm:ss"; } } else { format = "yyyy-MM-dd"; } SimpleDateFormat sf = new SimpleDateFormat(); sf.applyPattern(format); @R_616_6561@amp = new @R_616_6561@amp(sf.parse(timE).getTime()); } else { @R_616_6561@amp = (timestamp) value; } if(@R_616_6561@amp != null) { method.invoke(bean,new Object[] { @R_616_6561@amp }); } } else if("byte[]".equals(typE)) { method.invoke(bean,new Object[] { new String(""+value).getBytes() }); } } catch(Exception eX) { LogUtil.errorLog(JsonUtil.class,"JSONObject赋值给JavaBean失败",eX); } } } /** * 将Model转换成JSONObject */ @SuppressWarnings("unchecked") public static JSONObject coverModelToJSONObject(Object o) throws Exception{ JSONObject json = new JSONObject(); Class clazz = o.getClass(); Field [] fields = clazz.getDeclaredFields(); for(int i=0; i< fields.length; i++){ Field f = fields[i]; json.put(f.getName(),invokeMethod(clazz,f.getName(),o)); } return json; } /** * 将list转换成JSONArray */ public static JSONArray coverModelToJSONArray(List list) throws Exception{ JSONArray array = null; if(list.isEmpty()){ return array; } array = new JSONArray(); for(Object o : list){ array.put(coverModelToJSONObject(o)); } return array; } @SuppressWarnings("unchecked") private static Object invokeMethod(Class c,String fieldName,Object o){ String methodName = fieldName.subString(0,1).toUpperCase()+ fieldName.subString(1); Method method = null; try { method = c.getmethod("get" + methodName); return method.invoke(o); } catch (Exception E) { LogUtil.errorLog(E); return ""; } } }
以上是大佬教程为你收集整理的JsonUtil JSONObject、JavaBean、Model、list相互转化全部内容,希望文章能够帮你解决JsonUtil JSONObject、JavaBean、Model、list相互转化所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。