将任意类对象转成Json字符串
在我们开发可能遇到这样的问题,我们需要将一个类打印,也就是将一个类中的基本类型成员和该成员的数值打印,或者转成json数据,不多说上代码。
一段漂亮的代码片
.
// An highlighted block
//将类对象转成JSONObject对象
@SuppressWarnings("unchecked")
private<T> JSONObject toJSON(T t)
{
JSONObject data = new JSONObject();
JSONObject jo = new JSONObject();
data.put("data",jo);
Type type = t.getClass();
if (type != null) {
Class tClass = (Class<T>)type;
data.put("className",tClass.getName());
try {
tClass=Class.forName(tClass.getName());
Field[] f=tClass.getDeclaredFields();
Method[] m=tClass.getDeclaredMethods();
for(int j=0;j<f.length;j++) {
jo.put(f[j].getName(),"");
for (int i = 0; i < m.length; i++) {
//查询是否有get+成员名的方法
if (m[i].getName().equals("get"+f[j].getName().substring(0,1).toUpperCase()+f[j].getName().substring(1))) {
Object o = m[i].invoke(t);
jo.put(f[j].getName(), o);
}
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
return data;
}
结果
{“data”:{“id”:137,“value”:“555”,“key”:“int值”},“className”:“testData”}