是否可以让 ObjectMapper 只转换实际对象而不递归地转换对象树的其余部分?
以便 :
Map<String,Object> props = new ObjectMapper().convertValue(obj, Map.class);
导致 [field, value] 的映射,其中值是对 obj 而不是 Maps 的字段实例的实际引用?
杰克逊现在没有这样的功能。您可以使用可以共享一些数据和“协议”的自定义 Serializer/Deserializer 对来实现这一点。但是,当更简单(而且更快)的方法是有一种从 POJO 到 Map 的通用方法(可能使用反射)时,为什么还要这样做呢。
我不确定我是否理解您在这里真正想要做什么。
但可能有帮助的一件事是记住java.lang.Object
type (以及JsonNode
)可以自由地包含在结构中,以便在结构中更深地获得某种“无类型”绑定。使用这些类型,您可以避免对对象模型的某些子集进行严格的数据绑定;ObjectMapper.convertValue()
并可能使用更动态的方式转换为 POJO 。