【问题标题】:What java mapping libraries can map from a Map<String, Object> to pojo/bean?哪些 java 映射库可以从 Map<String, Object> 映射到 pojo/bean?
【发布时间】:2016-08-11 17:38:18
【问题描述】:

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

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

【问题讨论】:

  • 这并不难。当然,您必须自己定义目标类。
  • @JornVernee 库还是手动映射?无论哪种方式都很简单,但手动映射需要大量人力,并且大多数现有库都具有高级功能,实施和测试自己会很乏味,特别是如果已经存在一些东西的话。

标签: java mapping javabeans pojo dozer


【解决方案1】:

虽然不完全是重复的,但我发现 this question 提供了一个直截了当的答案。

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

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

【讨论】:

    【解决方案2】:

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

    请仔细阅读user guide

    FAQ中也提到过。

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

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

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

    对于 List 或 Array 的 Bean,遵循与上述 Maps 相同的策略,但不是提供键值,而是提供 Array 或 List 中应存储 Bean 值的索引值。

    【讨论】:

      猜你喜欢
      • 2017-11-25
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 2023-01-15
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      相关资源
      最近更新 更多