如何在java中将地图转换为实体对象?

How to convert a map to a entity object in java?

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

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

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

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

现在我想将此地图转换为 Person 对象,其中对象中的每个字段都对应于地图中的那个字段。

我该怎么做?

谢谢

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

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;
}

或者你可以使用 jackson 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也可以用于同样的目的。