SpringCodegen生成的类使用JsonTypeInfo.As.EXISTING_PROPERTY而不是JsonTypeInfo.As.PROPERTY。

huangapple go评论65阅读模式
英文:

SpringCodegen generates class with JsonTypeInfo.As.EXISTING_PROPERTY instead of JsonTypeInfo.As.PROPERTY

问题

一个字段在JSON反序列化中不再显示。

这是因为我们的代码生成器将OpenApi定义转换为这样:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "type", visible = true)

之前它能够正常工作,因为它被翻译为:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type", visible = true)

这段代码是从一个OpenAPI 3.0.2 YAML文件生成的,使用了SpringCodegen。

有没有人知道我是否可以在OpenAPI定义或Maven OpenAPI插件中指定生成代码时使用JsonTypeInfo.As.PROPERTY?我们使用Java 11。

非常感谢。

问候。

在我的本地测试中,JsonTypeInfo.As.PROPERTYJsonTypeInfo.As.EXTERNAL_PROPERTY 都可以工作,但生成的代码使用了 JsonTypeInfo.As.EXISTING_PROPERTY,我不能在生成的类中更改它。

英文:

One field is not showing anymore in the deserialization of the json.

It happened because our code generator is transforming the OpenApi definition into this:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "type", visible = true)

Before it was working because it translated into:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type", visible = true)

This code is generated from an openapi: 3.0.2 yml file with SpringCodegen.

Does anyone know if I can tell in the open api definition or in the maven openApi plugin to generate the code to use: JsonTypeInfo.As.PROPERTY?

We are using Java 11

Thank you very much

Regards.

In my local test It worked with JsonTypeInfo.As.PROPERTY and JsonTypeInfo.As.EXTERNAL_PROPERTY but the code is generated with JsonTypeInfo.As.EXISTING_PROPERTY which I cannot change in the generated clases.

答案1

得分: 1

根据我所了解,似乎无法配置openapi生成器的JsonTypeInfo生成。这些定义在openapi生成器代码库中的mustache模板中是硬编码的。

要了解如何生成JsonTypeInfo,我建议以下操作:

  • 克隆openapi-generator存储库。
  • 切换到与您正在使用的openapi生成器版本相对应的标签。
  • 找到mustache模板。它们应该位于openapi-generator/modules/openapi-generator/src/main/resources/下。
  • 找到相应的生成器,查看typeInfoAnnotation.mustache模板。

如果需要,您可以检查其他标签,以查找生成您期望的JsonTypeInfo的版本。

注意:我在openapi生成器v3.0.2中未找到对JsonTypeInfo.As.EXISTING_PROPERTY的任何引用。

英文:

As far as I can tell, it is not possible to configure openapi generator's JsonTypeInfo generation. These definitions are hard-coded in mustache templates in openapi generator codebase.

To see how JsonTypeInfo are generated, I would suggest the following:

  • clone openapi-generator repo.
  • checkout the tag corresponding to the version of openapi generator you are using.
  • find the mustache templates. They should be under
    openapi-generator/modules/openapi-generator/src/main/resources/.
  • find the corresponding generator and look at typeInfoAnnotation.mustache template .

You may want to checkout other tags to find the version that generate the JsonTypeInfo you expect, if any.

Note: I could not find any reference to JsonTypeInfo.As.EXISTING_PROPERTY in openapi generator v3.0.2

huangapple
  • 本文由 发表于 2023年2月7日 01:32:41
  • 转载请务必保留本文链接:https://go.coder-hub.com/75364673.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定