英文:
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.PROPERTY
和 JsonTypeInfo.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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论