Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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,请注明来意。