对象转HashMap
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ObjectToMap {
public static void main(String[] args) throws Exception {
TestData o =new ObjectToMap().new TestData();
o.setAge(20);
o.setName("张三");
Hobby m = new ObjectToMap().new Hobby();
m.setDesc("书");
m.setID(1);
Hobby n = new ObjectToMap().new Hobby();
n.setDesc("画");
n.setID(2);
ArrayList<Hobby> hobby = new ArrayList<Hobby>();
hobby.add(m);
hobby.add(n);
o.setHobby(hobby);
Map<String, Object> mapData = new HashMap<String, Object>();
parseObject(mapData ,o);
System.out.println(mapData);
}
protected static void parseObject(Map<String, Object> mapData, TestData object) throws Exception {
Class cls = TestData.class;
while (!cls.equals(Object.class)) {
Field[] fields = cls.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
if (field.get(object) != null) {
mapData.put(field.getName(), formatRequestData(field.get(object)));
}
}
cls = cls.getSuperclass();
}
}
protected static Object formatRequestData(Object value) throws Exception {
if (value.getClass().equals(String.class))
return value;
if (value instanceof List) {
List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
for (Object obj : (List) value) {
Map<String, Object> tempMap = new HashMap<String, Object>();
Class cls = obj.getClass();
Field[] fields = cls.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
if (field.get(obj) != null) {
tempMap.put(field.getName(), formatRequestData(field.get(obj)));
}
}
resultList.add(tempMap);
}
return resultList;
}
return value;
}
class TestData{
private String name;
private int age;
private ArrayList<Hobby> hobby;
TestData(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public ArrayList<Hobby> getHobby() {
return hobby;
}
public void setHobby(ArrayList<Hobby> hobby) {
this.hobby = hobby;
}
}
class Hobby {
private int ID ;
private String desc;
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
}
