动态json

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class JsonUtil {
private static final String DATAS = "datas";
private static final String NUMBER = "number";
public static String getJson(List<Object> objList, JSONObject temp,
Class cl,String name) {
JSONArray jsonArray = new JSONArray();
for (Object obj : objList) {
if (temp == null) {
temp = new JSONObject();
}
Field fields[] = obj.getClass().getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
 
String fieldname = fields[i].getName();
Object returnvalue = null;
try {
returnvalue = obj.getClass().getMethod(
"get" + fieldname.substring(0, 1).toUpperCase()
+ fieldname.substring(1), new Class[] {})
.invoke(obj, new Object[] {});
 
if (returnvalue != null) {
if (!returnvalue.getClass().getPackage().getName()
.equals(obj.getClass().getPackage().getName())) {
if (fields[i].getAnnotation(cl) != null) {
temp.put(name+obj.getClass().getSimpleName() + fieldname, returnvalue);
}
} else {
List<Object> objectlist = new ArrayList<Object>();
objectlist.add(returnvalue);
Field[] retfields = returnvalue.getClass()
.getDeclaredFields();
for (int j = 0; j < retfields.length; j++) {
;
if (retfields[j].getAnnotation(cl) != null) {
getJson(objectlist, temp,
cl,name+obj.getClass().getSimpleName());
}
}
}
 
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
jsonArray.add(temp);
}
 
JSONObject jsonobj = new JSONObject();
jsonobj.put(DATAS, jsonArray);
 
return jsonobj.toString();
}
 
}
 
posted @ 2014-11-28 09:05  流氓剑客  阅读(112)  评论(0)    收藏  举报