简单的JavaBean转JSON方法

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式!在javascript中,经常用于前台与后台的数据交互。在实际的工作中,我们经常需要把后台的JavaBean转换成JSON然后传给前台,网上有很多成熟的转换工具,其实我们自己也可以动手写一个,代码很简单!

package com.test.json;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;

public class Json {
	/**
	 * 对象生成json
	 * @param object
	 * @return
	 */
	public static String objectToJson(Object object){
		StringBuffer sb = new StringBuffer();
		if(object != null){
			String className = object.getClass().getSimpleName();
			sb.append("{\"");
			sb.append(className);
			sb.append("\"");
			sb.append(":[");
			generateJson(generateMethodList(object),object,sb);
			sb.append("]}");
		}
		return sb.toString();
	}
	/**
	 * list 生成json
	 * @param list
	 * @return
	 */
	public static String ListToJson(List list){
		StringBuffer sb = new StringBuffer();
		int index = 0;
		if(list.size() > 0){
			Object firstObject = list.get(0);
			String className = firstObject.getClass().getSimpleName();
			sb.append("{\"");
			sb.append(className);
			sb.append("\"");
			sb.append(":[");			
			for(Object object  : list ){
				generateJson(generateMethodList(object),object,sb);
				if(!(index++ == list.size() -1)){
					sb.append(",");
				}
			}
			sb.append("]}");
		}
		return sb.toString();
	}
	/**
	 * set生成Json
	 * @param set
	 * @return
	 */
	public static String setToJson(Set set){
		if(set.size() > 0){
			List list = new ArrayList();
			list.addAll(set);
			return Json.ListToJson(list);
		}else{
			return null;
		}
	}
	/**
	 * 生成json
	 * @param methodList
	 * @param object
	 * @param sb
	 */
	private static void generateJson( List methodList,Object object,StringBuffer sb){
		int index = 0;
		for(Method method : methodList){
			String methodName = method.getName();
			methodName = methodName.replace("get", "").toLowerCase();
			try {
				//执行get方法,取得值
				String methodValue = method.invoke(object, null).toString();
				sb.append("{\"");
				sb.append(methodName);
				sb.append("\":\"");
				sb.append(methodValue);
				sb.append("\"}");
				if(!(index++ == methodList.size() - 1)){
					sb.append(",");
				}
			} catch (IllegalArgumentException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			} catch (InvocationTargetException e) {
				e.printStackTrace();
			}				
		}
	}
	/**
	 * 取得所有以get开头的方法,不包括getClass方法
	 * @param object
	 */
	private static List  generateMethodList(Object object){
		List methodList = new ArrayList();
		Method[] methods = object.getClass().getMethods();
		for(Method method : methods ){
			String methodName = method.getName();
			if(methodName.startsWith("get") && !methodName.endsWith("Class")){
				methodList.add(method);
			}
		}		
		return methodList;
	}
}
 
  


 

你可能感兴趣的:(简单的JavaBean转JSON方法)