Java 给定一个类,如何获得该类序列化的jackson结构?

Java 给定一个类,如何获得该类序列化的jackson结构?,java,json,jackson,Java,Json,Jackson,给定一个任意类,Jackson是否可以提供序列化和反序列化所需的字段列表 杰克逊的问题很复杂。我想在运行时确定任意类(序列化和反序列化)所需的Jackson JSON结构。我目前计划的实现是寻找@JsonConstructor构造函数方法并解析其参数。如果没有,请在其他方法上查找注释,否则,请使用成员变量列表。我将递归任何非基本字段类型的算法 最终目标是为服务端点创建文档。是的,您可以使用Jackson的内省。这样做的好处是,所有注释都按预期应用,结果应该与Jackson“看到”的类型完全相同,

给定一个任意类,Jackson是否可以提供序列化和反序列化所需的字段列表

杰克逊的问题很复杂。我想在运行时确定任意类(序列化和反序列化)所需的Jackson JSON结构。我目前计划的实现是寻找@JsonConstructor构造函数方法并解析其参数。如果没有,请在其他方法上查找注释,否则,请使用成员变量列表。我将递归任何非基本字段类型的算法


最终目标是为服务端点创建文档。

是的,您可以使用Jackson的内省。这样做的好处是,所有注释都按预期应用,结果应该与Jackson“看到”的类型完全相同,您需要了解有关类型的信息

至少有两种方法可以做到这一点:

  • 通过
    SerializationConfig
    (或,
    DeserializatonConfig
    )请求自省,以获取
    BeanDescription
  • 通过调用
    ObjectMapper.acceptJsonFormatVisitor(类型,访问者)
  • 第一种方法通常更简单:

    JavaType type = mapper.constructType(MyBean.class);
    BeanDescription desc = mapper.getSerializationConfig()
       .introspect(type);
    

    但后者对于生成模式(JSON模式、XML模式、protoc、thrift)之类的任务很有用。

    不知道您是想手工编写代码,还是只想创建文档。在后一种情况下,你有没有看一看和它的?两者都是很好的选择。Json格式的访问者就是我想要的。非常感谢。