使用反射从未知的list中取值
今天,我拿到了一个未知的List,想要拆开一看,可是其内部是一个个object,几番强转无用,最后我决定利用反射取值,果然很快就拿到了我想要的,接下来,(由于闲的蛋疼)我把代码块封装成一个工具方法,大家复制调用即可,不必在写代码了。实现功能如下:把一个未知的List集合塞给方法,返回值是一个String,使用Json解析即可得到一个对象集合,对象内部value均为String,你就可以随心所欲的转换了:
public static String getListObjValue(List list) throws Exception {
StringBuilder result = new StringBuilder();
result.append("[");
for (int i = 0; i < list.size(); i++) {
result.append("{");
Field[] fields = list.get(i).getClass().getDeclaredFields();
Object object = list.get(i);
for (int j = 0; j < fields.length; j++) {
fields[j].setAccessible(true);
result.append("+fields[j].getName()+"+:+"+fields[j].get(object)+");
if (j<fields.length-1){
result.append(,);
}
}
result.append("}");
if (i<list.size()-1){
result.append(",");
}
}
result.append("]");
return String.valueOf(result);
}
不要计较内容,up可是用一个个char拼接起来的,捂脸笑 下面测一下,假装我有一个UserPO,里面只有两个字段
List<UserPO> aa = new ArrayList<>();
UserPO user = new UserPO();
user.setId(1);
user.setUserId("ddd1");
UserPO user1 = new UserPO();
user1.setId(2);
user1.setUserId("ddd2");
aa.add(user);
aa.add(user1);
List bb = aa;
String str = ClassUtil.getListObjValue(bb);
System.out.println("**************");
System.out.println(str);
结果为 over ><
