import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import com.jssh.bean.system.SysMenu;
import com.jssh.bean.system.SysMenuId;
public class JsonUtil<T> {
/**
* 将对象集合包装成JSON格式
* @param list 对象集合
* @return JSON格式字符串
*/
public String setList2ToJson(List<T> list){
StringBuffer msg=new StringBuffer("[");
for(T obj:list){
msg.append(setObject2Json(obj));
}
msg.deleteCharAt(msg.length()-1);
msg.append("\n]");
return msg.toString();
}
/**
* 将类对象包装成JSON格式 : {'name':'a','value':'b'},
* @param obj
* @return JSON格式字符串
*/
public String setObject2Json(T obj){
StringBuffer sb=new StringBuffer("\n{'");
Field[] fields=obj.getClass().getDeclaredFields();
for(Field f:fields){
String fieldName=f.getName();
//成员变量是否序列化
if(!fieldName.equals("serialVersionUID")){
Object methodValue=getFieldValue(fieldName, obj);
sb.append(fieldName);
Class<?> cls=f.getType();
/** 判断该成员变量是否自定义类对象 **/
if(!cls.getName().equals("java.lang.String") && !cls.getName().equals("java.lang.Integer")
&& !cls.getName().equals("java.util.Date") && !cls.getName().equals("long")){
sb.append("':");
/** 返回对象 **/
T o=(T)getFieldValue(f.getName(),obj) ;
String str=setObject2Json(o);
sb.append(str);
sb.append("\n'");
}else{
sb.append("':'");
sb.append(methodValue.toString());
sb.append("',\n'");
}
}
}
sb.delete(sb.length()-4,sb.length()-1);
sb.append("},");
return sb.toString();
}
/**
* 获取类所有属性名
* @param obj 对象
* @return 属性数组
*/
public String[] getFieldNames(T obj){
Field[] fields=obj.getClass().getDeclaredFields();
String[] fnames=new String[fields.length];
for(int i=0;i<fnames.length;i++){
fnames[i]=fields[i].getName();
}
return fnames;
}
/**
* 获取属性返回值
* @param methodName
* @param t
* @return
*/
public Object getFieldValue(String fieldName,T obj){
/** 得到类属性值 **/
Object methodValue=null;
/** 组织GET方法名 **/
String methodName="get"+fieldName.substring(0, 1).toUpperCase()+fieldName.substring(1);
try {
Method method=obj.getClass().getMethod(methodName, null);
methodValue=(Object) method.invoke(obj, null);
if(methodValue==null) methodValue="";
}catch(Exception e){
e.printStackTrace();
}
return methodValue;
}
public static void main(String[] args) {
SysMenu menu=new SysMenu();
menu.setIcon("icon");
SysMenuId id=new SysMenuId();
id.setMenuModule("oooooooooooooooooooo");
id.setMenuPrivilege("~~~~~~~~~~~~~~~~~~~~~~~~~");
menu.setId(id);
menu.setMenuName("xxxxxxxxxxxxxxxxxxxxxxx");
SysMenu menu2=new SysMenu();
menu2.setIcon("icon");
SysMenuId id2=new SysMenuId();
id2.setMenuModule("oooooooooooooooooooo");
id2.setMenuPrivilege("~~~~~~~~~~~~~~~~~~~~~~~~~");
menu2.setId(id2);
menu2.setMenuName("xxxxxxxxxxxxxxxxxxxxxxx");
List<SysMenu> list=new ArrayList<SysMenu>();
list.add(menu);
list.add(menu2);
String str=new JsonUtil<SysMenu>().setList2ToJson(list);
System.out.println(str);
}
}
转载于:https://blog.51cto.com/8659144/1394150