转换列表<map <string,object>&gt;到POJO类的对象</map <string,object>

时间:2015-02-13 09:49:16

标签: java arraylist hashmap pojo

我有一个HashMap对象列表,其中hashMap对象包含属性名称作为键,属性值作为值列表&gt;。如何将每个HashMap对象转换为我的POJO类的对象。

1 个答案:

答案 0 :(得分:3)

以下是使用reflection

执行此操作的方法

Pojo课程:

public class MyPojo {
    private String text;
    private Integer number;

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public Integer getNumber() {
        return number;
    }

    public void setNumber(Integer number) {
        this.number = number;
    }
}

使用反射填充你的pojo实例;

final List<Map<String, Object>> objects = new ArrayList<Map<String, Object>>();
objects.add(new HashMap<String, Object>());
objects.get(0).put("text", "This is my text value.");
objects.get(0).put("number", 10);
objects.add(new HashMap<String, Object>());
objects.get(1).put("text", "This is my second text value.");
objects.get(1).put("number", 20);

ArrayList<MyPojo> pojos = new ArrayList<MyPojo>();

for (Map<String, Object> objectMap : objects) {
    MyPojo pojo = new MyPojo();
    for (Entry<String, Object> property : objectMap.entrySet()) {
        Method setter = MyPojo.class.getMethod("set" + property.getKey().substring(0, 1).toUpperCase()
                + property.getKey().substring(1), property.getValue().getClass());
        setter.invoke(pojo, property.getValue());
    }
    pojos.add(pojo);
}

for (MyPojo pojo : pojos) {
    System.out.println(pojo.getText() + " " + pojo.getNumber());
}

输出:

  

这是我的文字值。 10

     

这是我的第二个文字值。 20