首页 > 解决方案 > 如何在java中将地图转换为实体对象?

问题描述

我有一个这样的实体对象:

class Person{
 private String name;
 private String class;
 private String semester;
}

现在我有一张这样的地图:Map<String,String>

{
   "name":"Giri"
   "class":"12"
   "semester":"C"
}

现在我想将此映射转换为 Person 对象,其中对象中的每个字段对应于映射中的该字段。

我怎样才能做到这一点?

谢谢

标签: javaspring-bootclassspring-mvchashmap

解决方案


您可以为此编写自定义映射器。

toPerson(Map<String, String> map) {
    if(map == null) {
        return null;
    }
    Person person = new Person();
    person.setName = map.get("name");
    person.setClass = map.get("class");
    person.setSemester = map.get("semester");
    return person;
}

或者你可以使用杰克逊 convertValue()

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Person person = mapper.convertValue(map, Person.class);

除了jackson的ObjectMapper,还有DozerBeanMapper,BeanUtils,google的Gson都可以用于同样的目的。


推荐阅读