[code="java"]
List list = new ArrayList();
User user0 = new User();
user0.setUsername("ty");
user0.setAge(24);
user0.setTel("137***");
user0.setAddress("南京");
list.add(user0);
User user1 = new User();
user1.setUsername("tz");
user1.setAge(21);
user1.setTel("158***");
user1.setAddress("南京");
list.add(user1);
String jsonArray = JSONHelper.getJSONByBeanList(list);
System.out.println(jsonArray);
[/code]
[code="java"]
public static String getJSONByBeanList(List<?> list) {
try {
Class<?> clazz = list.get(0).getClass();
Field fields[] = clazz.getDeclaredFields();
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < fields.length; j++) {
Object objectCopy = clazz.getConstructor(new Class[] {}).newInstance(new Object[] {});
String fieldName = fields[j].getName();
String firstLetter = fieldName.substring(0, 1).toUpperCase(); // 获得和属性对应的getXXX()方法的名字
String getMethodName = "get" + firstLetter + fieldName.substring(1); // 获得和属性对应的setXXX()方法的名字
String setMethodName = "set" + firstLetter + fieldName.substring(1); // 获得和属性对应的getXXX()方法
Method getMethod = clazz.getMethod(getMethodName,new Class[] {}); // 获得和属性对应的setXXX()方法
Method setMethod = clazz.getMethod(setMethodName, new Class[] { fields[j].getType() }); // 调用原对象的getXXX()方法
Object value = getMethod.invoke(objectCopy, new Object[]{});
System.out.println(fieldName+" "+value);
}
}
} catch (JSONException e) {
throw new JSONException("");
}catch (SecurityException e) {
e.printStackTrace();
}catch (NoSuchMethodException e) {
e.printStackTrace();
}catch (IllegalArgumentException e) {
e.printStackTrace();
}catch (IllegalAccessException e) {
e.printStackTrace();
}catch (InvocationTargetException e) {
e.printStackTrace();
}catch (InstantiationException e) {
e.printStackTrace();
}
return "";
}
[/code]
现在的问题是,如果传一个单一的Bean那可以获得bean的名字和值,但是把多个Bean存入List,这时候我就 [color=red][size=xx-large]吐血了[/size][/color]
我的其主要目的就是为了转换成json,我没用org.json那些jar包。
请教一下兄弟能否告诉我这么搞,我很纠结,小弟万分感谢
非诚勿扰。。。。