想通过java的反射功能将javaBean转换成map:
public static Map<String, String> toMap(Object javaBean) {
Map<String, String> result = new HashMap<>();
Method[] methods = javaBean.getClass().getDeclaredMethods();
for (Method method : methods) {
try {
if (method.getName().startsWith("get")) {
String field = method.getName();
field = field.substring(field.indexOf("get") + 3);
field = field.toLowerCase().charAt(0) + field.substring(1);
Object value = method.invoke(javaBean, (Object[]) null);
String val = "";
if (value != null) {
if (value.getClass().isArray()) {
Object[] array = (Object[]) value;
val = "[";
boolean flag = true;
for (Object o : array) {
if (flag) {
flag = false;
val += o.toString();
} else {
val += ", " + o.toString();
}
}
val += "]";
} else {
val = value.toString();
}
result.put(field, val);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
如果javabean中有整型数组的话,以上程序就无法正常使用了,比如如下的javabean:
public class Student {
private int id;
private String name;
private String desc;
private String[] phones;
private List<String> addresses;
private int[] scores;
//getter and setter ...
其中对scores的转换会遇到问题:
java.lang.ClassCastException: [I cannot be cast to [Ljava.lang.Object;
请问我该如何处理原始类型的数组?
慕标琳琳
相关分类