通过反射来实现List转为JSON
程序员文章站
2024-01-20 15:40:52
...
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorUtil<T> {
/**
* 将List格式转换为JSONArray格式
* @param list
* @param <T>
* @return
*/
public static <T> JSONArray convertToJson(List<T> list){
if (list.size()==0){
System.out.println("list 为空");
return null;
}
Class clazz = list.get(0).getClass();
Method[]methods = clazz.getMethods();
List<Method>getMethods = new ArrayList<>();
for (Method method:methods){
if (method.getName().matches("get[A-z]*")&&method.getDeclaringClass().equals(clazz)){
getMethods.add(method);
}
}
Iterator<T> iterator = list.iterator();
JSONArray jsonArray = null;
JSONObject jsonObject;
try {
jsonArray = new JSONArray();
while (iterator.hasNext()){
jsonObject = new JSONObject();
Object instance = iterator.next();
Iterator<Method> methodIterator = getMethods.iterator();
while (methodIterator.hasNext()){
Method method = methodIterator.next();
Object value = method.invoke(instance,new Object[]{});
String field = method.getName().substring(3,4).toLowerCase()+method.getName().substring(4);
jsonObject.put(field,value);
}
jsonArray.add(jsonObject);
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}finally {
return jsonArray;
}
}
}
上一篇: 设计模式-结构型软件设计模式(三)
下一篇: 《如何做好软件设计》:设计原则
推荐阅读