小编nic*_*hoe的帖子

为什么鉴别器属性被序列化两次?

我在组件模式中使用 OpenAPI 3.0 继承,并且我有由 openapi-generator(使用 Jackson)生成的(Java)类。

为什么鉴别器属性在生成的 JSON 中被序列化两次?

这是一个 JHipster API-First 项目,它应该使用 openapi-generator 来生成 Java 模型(带有 Jackson 注释的 POJO)和 API 控制器(与 Spring 的 @Api 注释的接口)。

通过遵循 OpenAPI 3.x 文档/示例,似乎discriminator还必须在properties架构列表中指定所使用的属性。

这样,生成的 Java 类似乎与带有注释的多态类型处理的 Jackson 指南(此处)不同,其中用作鉴别器的属性不能出现在类中。相反,生成的代码还包含此属性作为具有 getter/setter 的类属性。这会导致 JSON 输出两次包含该属性,如下所示。

我还尝试从 OpenAPIproperties列表中删除该属性,而保留完整的discriminator部分;这样生成的代码对应于杰克逊的指导方针,序列化工作得很好。另一方面,我在反序列化过程中遇到错误,因为在目标类中找不到(已删除)属性。

遵循 OpenAPI 3.x 文档指南:

TicketEvent:
  type: object
  description: A generic event
  discriminator:
    propertyName: type
  required:
    - id
    - sequenceNumber
    - timestamp
    - type
  properties:
    id:
      type: integer
      format: int64 …
Run Code Online (Sandbox Code Playgroud)

java jackson swagger swagger-codegen openapi-generator

5
推荐指数
1
解决办法
3154
查看次数