杰克逊补丁对象按地图

时间:2017-05-21 19:46:19

标签: java jackson

我有以下测试代码:

Model model = new Model();
model.setName("Alex");
model.setAddress("NY");

Map<Object, Object> attrs = new HashMap<>();
attrs.put("address", "London");

我需要使用model attrs中的值修补现有的Map对象。

所以,在执行代码之后,我需要使用具有以下值的现有model对象:

name: Alex
address: London

是否可以使用Jackson库实现?如果是,请举个例子。

1 个答案:

答案 0 :(得分:1)

杰克逊绝对可以实现。如mentioned by yshavit,以下内容将起到作用:

ObjectMapper mapper = new ObjectMapper(); 

// Convert POJO to Map
Map<String, Object> modelAsMap = 
    mapper.convertValue(model, new TypeReference<Map<String, Object>>() {}); 

// Merge maps
modelAsMap.putAll(attrs);

// Convert Map to POJO
Model modelPatched = mapper.convertValue(modelAsMap, Model.class);

有关将POJO映射到Map的更多详情,反之亦然,请参阅此answer