我有一个不确定其键的地图,但是我确定键包含所有pojo字段,说:
public class MyPojo{
String name,
String addr
}
//map contains keys that not in MyPojo field,e.g. age
map = {"name":"john","addr":"sf school","age":"21"}
在Java中,如何将其转换为pojo MyPojo实例? the following method抛出异常:
final ObjectMapper mapper = new ObjectMapper(); // jackson's objectmapper
final MyPojo pojo = mapper.convertValue(map, MyPojo.class);
答案 0 :(得分:3)
您可以在 MyPojo 类中使用Jackson的@JsonIgnoreProrperties
。
唯一的原因是ObjectMapper无法在MyPojo类中找到确切的映射。
API与ObjectMapper在同一库中提供。
这就是您的班级样子:
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyPojo{
String name;
String addr;
//Other variables
}
要将其导入代码中,您需要添加以下内容:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
我希望这可以解决您的问题,这正是您所要的。
答案 1 :(得分:0)
在使用泛型键(以前未知)时,可能有一些键(属性名)出现在地图中,因为POJO中没有键作为属性。因此,在创建ObjectMapper
实例时,请将以下属性设置为false,以使任何未知或缺少的属性都不会引发任何异常。
final ObjectMapper mapper = new ObjectMapper(); // jackson's objectmapper
mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);