Java 将一些值从hashmap导入POJO
我想将类型为的Hashmap转换为POJO。我目前正在使用jackson对其进行转换,但是,由于该请求是一个API请求,用户可能会提供比需要更多的字段。 例如 hashmap可以是:Java 将一些值从hashmap导入POJO,java,jackson,pojo,Java,Jackson,Pojo,我想将类型为的Hashmap转换为POJO。我目前正在使用jackson对其进行转换,但是,由于该请求是一个API请求,用户可能会提供比需要更多的字段。 例如 hashmap可以是: { field1ID:"hi", field2ID:["HI","HI","JO"], field3ID:"bye" } 而pojo只是 { field1ID:"hi", field3ID:"bye" } 使用ObjectMapper.convertValue时,除非hashmap与pojo
{
field1ID:"hi",
field2ID:["HI","HI","JO"],
field3ID:"bye"
}
而pojo只是
{
field1ID:"hi",
field3ID:"bye"
}
使用
ObjectMapper.convertValue
时,除非hashmap与pojo之间存在一对一的映射,否则将抛出IllegalArguemetException。我想做的是,如果这片土地在那里,那就绘制这片土地的地图。否则,将其设为NULL。< P>因为您没有在您的问题中提供任何代码,请考虑,例如,您有一个如下所示的映射:
Map Map=newhashmap();
地图。放置(“名字”、“约翰”);
地图放置(“姓氏”、“Doe”);
map.put(“电子邮件”,数组.asList(“johndoe@mail.com约翰。doe@mail.com"));
地图放置(“生日”,当地日期(1990年1月1日);
您希望将其映射到联系人的实例和
@数据
公共类联系人{
私有字符串名;
私有字符串lastName;
私人名单电子邮件;
}
可通过以下代码实现:
ObjectMapper mapper=new ObjectMapper();
禁用(反序列化功能。在未知属性上失败);
Contact-Contact=mapper.convertValue(map,Contact.class);
在上面的示例中,映射有一个生日
键,不能映射到联系人
类的任何字段。为防止序列化失败,已禁用该功能
或者,您可以使用注释
Contact
类,并将其设置为true
:
@数据
@JsonIgnoreProperties(ignoreUnknown=true)
公共类联系人{
...
}
然后执行转换:
ObjectMapper mapper=new ObjectMapper();
Contact-Contact=mapper.convertValue(map,Contact.class);
要将
联系人
实例转换回地图,可以使用:
ObjectMapper mapper=new ObjectMapper();
Map Map=mapper.convertValue(联系人,
新类型引用(){});
是否尝试将对象映射器设置为在未知属性上不失败?i、 e.将对象映射器声明为:new ObjectMapper().configure(UNKNOWN属性上的反序列化feature.FAIL,false)
只需使用@JsonIgnoreProperties(ignoreUnknown=true)注释pojo即可
查看。