什么java映射库可以从Map 映射到pojo/bean?
问题描述:
是否有映射库(如Dozer)可以从Map<String, Object>
映射到pojo/bean?什么java映射库可以从Map <String,Object>映射到pojo/bean?
我的具体使用案例是从nashorn出来的地图ScriptObjectMirror
,但我应该能够在更高的接口工作,因为ScriptObjectMirror
implements Map
。
答
虽然不完全重复,但我发现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内的索引值。
这不会很难。当然你必须自己定义目标类。 –
@JornVernee库或手动映射?无论哪种方式都很简单,但手动映射是劳动密集型的,大多数现有库具有高级功能,这些功能很难实施,并且对自己进行测试,尤其是在已经存在的情况下。 – kag0