我想将类型的Hashmap转换为POJO。我目前正在使用jackson进行转换,但是,由于请求是API请求,用户可能会提供比所需更多的字段。例如,hashmap可以是:
{
field1ID:"hi",
field2ID:["HI","HI","JO"],
field3ID:"bye"
}
虽然波乔很简单
{
field1ID:"hi",
field3ID:"bye"
}
使用ObjectMapper时。convertValue,除非hashmap与pojo之间存在一对一的映射,否则将抛出IllegalArguemetException。我想做的是,如果有字段,那么映射字段。否则将其保留为空。
由于您在问题中没有提供任何代码,请考虑,例如,您有一张地图,如下所示:
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));
您想将其映射到联系人的实例:
@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有一个生日
键,它不能映射到联系人
类的任何字段。为了防止序列化失败,FAIL_ON_UNKNOWN_PROPERTIES
功能已被禁用。
或者,您可以使用@JsonIgnoreProperties
注释联系
类,并将忽略未知
设置为true
:
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class Contact {
...
}
然后执行转换:
ObjectMapper mapper = new ObjectMapper();
Contact contact = mapper.convertValue(map, Contact.class);
要将联系人实例转换回地图,可以使用:
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map = mapper.convertValue(contact,
new TypeReference<Map<String, Object>>() {});
请帮我解决这个问题。 提前谢谢你。
下面的代码检查ArrayList中是否存在id 数组列表结果很好,但映射值仅返回true。请帮助我如何根据条件添加k、v以映射,以便映射结果如下所示[{Access=false},{Access=true},{Access=false},{Access=false},{Access=true}]。
问题内容: 我正在寻找仅使用JSTL设置HashMap的键值对。这可能吗? 我知道如何检索键值对,但是还没有找到设置它们的方法。 任何帮助,将不胜感激。 使用JSTL检索HashMap键/值对的示例: 问题答案: 您可以使用。
我加入了三张桌子: 目前,我正在获取数据,构建一个新的数组并将其插入到我的最终表中。 但是,我想知道是否可以一气呵成,所以基本上直接从临时表?
问题内容: 如何获得此映射中第一个键的第三个值?这可能吗? 问题答案: 存在执行此操作的库,但是最简单的普通Java方法是创建如下所示的:
问题内容: 我有这段代码可以从“ jobseeker”表中选择所有字段,并可以通过将userType设置为“ admin”来更新“ user”表,其中userID =$ userID(此userID是我用户中的一个用户数据库)。然后,该语句应将这些值从“ jobseeker”表插入到“ admin”表中,然后从“ jobseeker表”中删除该用户。sql表很好,我的语句正在将userType更改