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://www.cnblogs.com/yiyunkeji/p/6606257.html