什么java映射库可以从Map 映射到pojo/bean?

问题描述:

是否有映射库(如Dozer)可以从Map<String, Object>映射到pojo/bean?什么java映射库可以从Map <String,Object>映射到pojo/bean?

我的具体使用案例是从nashorn出来的地图ScriptObjectMirror,但我应该能够在更高的接口工作,因为ScriptObjectMirror implements Map

+0

这不会很难。当然你必须自己定义目标类。 –

+0

@JornVernee库或手动映射?无论哪种方式都很简单,但手动映射是劳动密集型的,大多数现有库具有高级功能,这些功能很难实施,并且对自己进行测试,尤其是在已经存在的情况下。 – kag0

虽然不完全重复,但我发现this question提供了一个简单的答案。

从本质上讲,Jackson的ObjectMapper除了其众所周知的JSON能力之外,还可用于对象到对象的映射。下面的代码显示了这可以如何轻松地在两行中完成。

final ObjectMapper mapper = new ObjectMapper(); // jackson's objectmapper 
final MyPojo pojo = mapper.convertValue(map, MyPojo.class); 

您可以使用orika mapper。它非常灵活和可扩展。 你可以找到更多的细节here

请通读user guide

它也在FAQ中提及。

我可以映射包含在集合中的对象或映射到一个领域,或者反之亦然

是。 (从版本1.3.0开始) 对于映射Bean,只需使用mapperFactory.classMap(...)方法将普通类映射为普通类型,然后将其中一个类型作为可分配的类(或类型)传递到java.util.Map。等式的Map侧的字段名称将用作Map键。

在这种情况下使用byDefault()方法将导致Bean类型的所有属性被其属性名映射到Map类型中。

对于Bean到列表或数组,请按照与上面提到的地图相同的策略,但不是提供键值,而是提供应存储Bean值的Array或List内的索引值。