是否有映射庫(如Dozer)可以從Map<String, Object>
映射到pojo/bean?什麼java映射庫可以從Map <String,Object>映射到pojo/bean?
我的具體使用案例是從nashorn出來的地圖ScriptObjectMirror
,但我應該能夠在更高的接口工作,因爲ScriptObjectMirror
implements Map
。
是否有映射庫(如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