2013-05-21 69 views
3

是否可以使ObjectMapper僅轉換實際對象而不遞歸對象樹的其餘部分?僅使用Jackson ObjectMapper轉換對象樹的第一級

這樣:

Map<String,Object> props = new ObjectMapper().convertValue(obj, Map.class); 

結果在地圖上[字段,值]其中價值觀是obj的,而不是地圖領域的情況下,實際參考?

回答

1

傑克遜現在沒有這種功能。你可以用一個可以共享一些數據和「協議」的自定義串行器/解串器對來實現。但是,當更容易(而且更快)的方式是使用POJO到Map的一種通用方式時,爲什麼要這樣做呢?可能使用反射。

+0

使用反射它至少是一個8班輪,即使我使用Spring BeanWrapper ...我只是想知道爲什麼沒有類似的方法在春天... – lisak

0

我不知道我明白你真的想在這裏做什麼。

但有一點可以幫助是記住java.lang.Object類型(以及JsonNode)可以自由納入結構,以獲得某種「類型化」結合的結構更深。使用這些類型,您可以避免對對象模型的某些子集進行嚴格的數據綁定;並可能更動態地使用ObjectMapper.convertValue()轉換爲POJO。

+0

我試圖使用ObjectMapper而不是BeanWrapper將對象轉換爲鍵的Map作爲字段/ getter名稱(bean約定)和值作爲getters的返回值。這裏沒有任何與JSON相關的東西。我只是想比BeanWrapper更快(代碼行)。 – lisak

+0

好的。所以不,'ObjectMapper.convertValue()'沒有選擇只做淺轉換。 – StaxMan

相關問題