2013-05-21 36 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

相关问题