2016-08-11 95 views
0

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

我的具體使用案例是從nashorn出來的地圖ScriptObjectMirror,但我應該能夠在更高的接口工作,因爲ScriptObjectMirror implements Map

+0

這不會很難。當然你必須自己定義目標類。 –

+0

@JornVernee庫或手動映射?無論哪種方式都很簡單,但手動映射是勞動密集型的,大多數現有庫具有高級功能,這些功能很難實施,並且對自己進行測試,尤其是在已經存在的情況下。 – kag0

回答

1

雖然不完全重複,但我發現this question提供了一個簡單的答案。

從本質上講,Jackson的ObjectMapper除了其衆所周知的JSON能力之外,還可用於對象到對象的映射。下面的代碼顯示了這可以如何輕鬆地在兩行中完成。

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

您可以使用orika mapper。它非常靈活和可擴展。 你可以找到更多的細節here

請通讀user guide

它也在FAQ中提及。

我可以映射包含在集合中的對象或映射到一個領域,或者反之亦然

是。 (從版本1.3.0開始) 對於映射Bean,只需使用mapperFactory.classMap(...)方法將普通類映射爲普通類型,然後將其中一個類型作爲可分配的類(或類型)傳遞到java.util.Map。等式的Map側的字段名稱將用作Map鍵。

在這種情況下使用byDefault()方法將導致Bean類型的所有屬性被其屬性名映射到Map類型中。

對於Bean到列表或數組,請按照與上面提到的地圖相同的策略,但不是提供鍵值,而是提供應存儲Bean值的Array或List內的索引值。

相關問題