protected void mySerializeJosnForAjax(Collection<?> collection){
JSONArray array = new JSONArray();
JSONObject js = new JSONObject();
try {
if(collection.size()>0){
for (Object object : collection) {
JSONObject json = new JSONObject();
Object instance = null;
Class<?> userClass = Class.forName(object.getClass().getName()); //返回与带有给定字符串名的类或接口相关联的 Class 对象
instance = userClass.newInstance(); // 创建此 Class 对象所表示的类的一个新实例。
instance = myReferenceObject(object);
Method[] methods = userClass.getMethods();//获得该类的所有方法
for (Method method : methods) {
String methodName = method.getName();//获得方法名
if(methodName.substring(0,3).equals("get")){//获得"get"方法
//获取属性名 setName
String paramName = methodName.substring(3,4).toLowerCase()+methodName.substring(4);
json.put(paramName, "instance."+methodName+"()");
}
}
array.put(json);
}
// js.put("total",total);
// js.put("page",page);
// js.put("rp",rp);
// js.put("sortname",sortname);
// js.put("sortorder",sortorder);
js.put("rows", array);
}else{
js.put("rows", "none");
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
现在问题就是这里:json.put(paramName, userClass.getMethod(methodName, null));
我获取不了getXXX()值的,json put进去的时候只是一窜方法名,
如:{"name":"public java.lang.String b2c.members.model.Member.getName()"}
Object invoke = method.invoke(object, null);
json.put(paramName, invoke);