HashMap转对象工具
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class MapToObject {
public static void main(String[] args) throws Exception {
Map<String, Object> mapData = new HashMap<String, Object>();
mapData.put("age", 20);
mapData.put("name", "张三");
Hobby m = new MapToObject().new Hobby();
m.setDesc("书");
m.setID(1);
Hobby n = new MapToObject().new Hobby();
n.setDesc("画");
n.setID(2);
ArrayList<Hobby> hobby = new ArrayList<Hobby>();
hobby.add(m);
hobby.add(n);
mapData.put("hobby", hobby);
TestData data = prepareRes(mapData);
System.out.println(data.getName()+" "+data.getAge()+" "+data.getHobby());
}
protected static TestData prepareRes(Map<String, Object> responseData) throws Exception {
Class cls = TestData.class;
// /TestData response = (TestData) cls.newInstance();
TestData td = new MapToObject(). new TestData();
while (!cls.equals(Object.class)) {
Field[] fields = cls.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
Iterator<Map.Entry<String, Object>> it = responseData.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Object> entry = (Map.Entry<String, Object>) it.next();
if (((String) entry.getKey()).equalsIgnoreCase(field.getName())) {
field.set(td, entry.getValue());
it.remove();
break;
}
}
}
cls = cls.getSuperclass();
}
return td;
}
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;
Hobby(){}
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;
}
}
}