gpt4 book ai didi

java - 将一些值从 hashmap 导入到 POJO

转载 作者:行者123 更新时间:2023-12-02 00:35:16 25 4
gpt4 key购买 nike

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

{
field1ID:"hi",
field2ID:["HI","HI","JO"],
field3ID:"bye"
}

而 pojo 只是简单

{
field1ID:"hi",
field3ID:"bye"
}

当使用ObjectMapper.convertValue时,除非存在从hashmap到pojo的一对一映射,否则将抛出IllegalArguemetException。我想做的是,如果该字段存在,则绘制该字段的 map 。否则将其保留为空。

最佳答案

由于您没有在问题中提供任何代码,请考虑,例如,您有一张 map ,如下所示:

Map<String, Object> map = new HashMap<>();
map.put("firstName", "John");
map.put("lastName", "Doe");
map.put("emails", Arrays.asList("johndoe@mail.com", "john.doe@mail.com"));
map.put("birthday", LocalDate.of(1990, 1, 1));

并且您希望将其映射到 Contact 的实例:

@Data
public class Contact {
private String firstName;
private String lastName;
private List<String> emails;
}

可以通过以下代码实现:

ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
Contact contact = mapper.convertValue(map, Contact.class);

在上面的示例中, map 有一个 birthday 键,该键无法映射到 Contact 类的任何字段。为了防止序列化失败,FAIL_ON_UNKNOWN_PROPERTIES功能已被禁用。

<小时/>

或者,您可以使用 @JsonIgnoreProperties 注释 Contact 类。并设置ignoreUnknowntrue:

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class Contact {
...
}

然后执行转换:

ObjectMapper mapper = new ObjectMapper();
Contact contact = mapper.convertValue(map, Contact.class);
<小时/>

要将 Contact 实例转换回 map ,您可以使用:

ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map = mapper.convertValue(contact,
new TypeReference<Map<String, Object>>() {});

关于java - 将一些值从 hashmap 导入到 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57983639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com