哪些 java 映射库可以将 Map<String, Object> 映射到 pojo/bean?

What java mapping libraries can map from a Map<String, Object> to pojo/bean?

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

我的具体用例是映射来自 nashorn 的 ScriptObjectMirrors,但我应该能够在更高的接口上工作,因为 ScriptObjectMirror 实现了 Map.

您可以使用 orika 映射器。它非常灵活和可扩展。 您可以找到更多详细信息 here.

请通读user guide

FAQ中也提到了。

我能否将包含在集合中的对象或映射到字段,反之亦然

是的。 (从版本 1.3.0 开始) 对于要映射的 Bean,只需使用 mapperFactory.classMap(...) 方法将 class-map 定义为正常,将其中一种类型作为 Class(或类型)传递,即可分配给 java.util.Map。等式地图端的字段名称将用作地图键。

在这种情况下使用 byDefault() 方法会导致 Bean 类型的所有属性都通过其 属性 名称映射到 Map 类型。

对于列表或数组的 Bean,遵循与上面提到的映射相同的策略,但不是提供键值,而是提供数组或列表中的索引值,Bean 值应存储在该索引值中。

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

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

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