OpenAPI Generator Java客户端未生成JsonNullable<?>问题及解决
问题:OpenAPI Generator 7.3.0生成Java客户端时
nullable:true未生成JsonNullable字段 使用OpenAPI Generator Gradle插件7.3.0版本生成Java客户端时,遇到如下问题:
当Swagger YAML中定义属性带有nullable:true时(示例代码):
tag: type: string nullable: true
预期生成的Java字段为private JsonNullable<String> tag = JsonNullable.undefined();,但实际生成的是private String tag;,未按预期使用JsonNullable包装。
尝试过的无效方案
- 移除
nullable属性、搭配required属性调整,均未得到预期结果 - 初始Gradle配置如下:
tasks.register('generateClient', GenerateTask) { generatorName.set("java") inputSpec.set(swaggerFile.toString()) outputDir.set(swaggerOutputDir) configOptions.set([dateLibrary: "java8", useJakartaEe: "true"]) }
- 切换为
generatorName.set("spring")虽能生成JsonNullable,但该配置用于服务端代码生成,不符合客户端需求 - 按照文档启用
x-is-jackson-optional-nullable: true,问题仍未解决
解决办法
通过调试源码发现,将generator的library配置为webclient后,JsonNullable可正常生成,无需额外配置x-is-jackson-optional-nullable。修改后的Gradle配置如下:
tasks.register('generateClient', GenerateTask) { generatorName.set("java") library.set("webclient") // 仅配置webclient时能正确生成JsonNullable inputSpec.set(swaggerFile.toString()) outputDir.set(swaggerOutputDir) configOptions.set([ dateLibrary: "java8", useJakartaEe: "true", openApiNullable: "true" // 默认已启用 ]) }
目前正在进一步测试该客户端的实际运行效果。
内容的提问来源于stack exchange,提问作者Luis Roberto
相关产品推荐
相关产品推荐

