使用Jackson ObjectMapper仅转换第一级对象树

时间:2013-05-21 16:52:38

标签: java json jackson

是否可以使ObjectMapper仅转换实际对象而不递归转换对象树的其余部分?

那样:

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

会产生[field,value]的映射,其中value是对obj字段实例的实际引用而不是Maps吗?

2 个答案:

答案 0 :(得分:1)

杰克逊现在没有这样的功能。您可以使用可以共享某些数据和“协议”的自定义串行器/解串器对来实现此目的。但是,当更容易(并且更快)的方式是从POJO到Map,可能使用反射时,为什么还要这么做呢。

答案 1 :(得分:0)

我不确定我是否理解你在这里真正要做的事情。

但有一件事可能会有所帮助,请记住,java.lang.Object类型(以及JsonNode)可以自由地包含在结构中,以获得更深层次的“无类型”绑定结构体。使用这些类型,您可以避免对对象模型的某些子集进行严格的数据绑定;并且可能更动态地使用ObjectMapper.convertValue()转换为POJO。