Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将一些值从hashmap导入POJO_Java_Jackson_Pojo - Fatal编程技术网

Java 将一些值从hashmap导入POJO

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

我想将类型为的Hashmap转换为POJO。我目前正在使用jackson对其进行转换,但是,由于该请求是一个API请求,用户可能会提供比需要更多的字段。 例如 hashmap可以是:

{
  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即可
查看。