给定一个任意类,Jackson 是否可以提供序列化和反序列化所需的字段列表?
jackson serialization rules很复杂。我想在运行时确定任意类(序列化和反序列化)期望的 Jackson JSON 结构。我目前计划的实现是寻找一个 @JsonConstructor 构造函数方法并解析它的参数。如果不存在,请查找其他方法的注释,否则,使用成员变量列表。我将为任何非原始字段类型递归该算法。
最终目标是为服务端点创建文档。
最佳答案
是的,您可以使用 Jackson 的内省(introspection)。这样做的好处是所有注释都按预期应用,结果应该与 Jackson“看到”您想要的信息类型完全一样。
至少有两种方法可以做到这一点:
- 通过
SerializationConfig
(或DeserializatonConfig
)请求自省(introspection),以获得BeanDescription
- 通过调用
ObjectMapper.acceptJsonFormatVisitor(type, visitor)
使用基于回调/访问者的方法
第一种方法通常更简单:
JavaType type = mapper.constructType(MyBean.class);
BeanDescription desc = mapper.getSerializationConfig()
.introspect(type);
但后者对于生成模式(JSON 模式、XML 模式、protoc、thrift)等任务很有用。
关于java - 给定一个类,如何获取类序列化的jackson结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38254621/