Java Openapi生成器maven插件可空属性问题

Java Openapi生成器maven插件可空属性问题,java,json,nullable,openapi,openapi-generator,Java,Json,Nullable,Openapi,Openapi Generator,我试图在使用OpenAPI3规范设计的API中引入可空属性。其思想是始终将属性返回给客户机,无论其值是否为null YAML文件(我第一次尝试时没有使用默认值,结果相同): 生成的Java代码: @JsonProperty("property") private JsonNullable<Integer> property = JsonNullable.undefined(); 因此,无论属性是否为null,结果总是“present:true”。如果没有可空性,它工作得很好

我试图在使用OpenAPI3规范设计的API中引入可空属性。其思想是始终将属性返回给客户机,无论其值是否为null

YAML文件(我第一次尝试时没有使用默认值,结果相同):

生成的Java代码:

  @JsonProperty("property")
  private JsonNullable<Integer> property = JsonNullable.undefined();
因此,无论属性是否为null,结果总是“present:true”。如果没有可空性,它工作得很好,除了从响应中删除不需要的空值

有什么想法吗

顺便说一句,该房产实际上并没有被命名为“房产”

编辑:配置:

<generateAliasAsModel>true</generateAliasAsModel>
<inputSpec>./api/interface1.yaml</inputSpec>
<generatorName>spring</generatorName>
<enablePostProcessFile>true</enablePostProcessFile>
<configOptions>
    <sourceFolder>src/main/java</sourceFolder>
    <library>spring-boot</library>
    <java8>true</java8>
    <interfaceOnly>true</interfaceOnly>
    <useOptional>true</useOptional>
</configOptions>
true
/api/interface1.yaml
春天
真的
src/main/java
弹簧靴
真的
真的
真的

可以将属性称为
nullable
,以在openApi中传递空值。 OpenApi生成器使用JsonNullable包装数据类型,如下所示

private JsonNullable<String> firstField = JsonNullable.undefined();

至少在版本
org.openapitools:jackson-databind-nullable:0.2.1
中,我没有看到这样的问题,意味着不需要显式注册上述内容,因为它由库本身负责。

您是使用openapi生成所有后端,还是只是尝试将此功能性添加到现有项目中?这是一个现有项目,其中rest api是通过在YAML文件中定义接口生成的,然后使用maven插件从中生成Java类。我在YAML文件中添加了nullable属性,然后运行插件并将生成的类移动到适当的位置?我知道这个特性会带来一些配置,比如一个bean提供了一个
JsonNullableModule
,我确实注意到了一个类似的问题,解决方案是注册JsonNullableModule(),但我不确定在这个上下文中如何做。除了模型和接口包之外,代码生成中没有那么多代码。嗨,我也有同样的问题,解决方案是什么?
<generateAliasAsModel>true</generateAliasAsModel>
<inputSpec>./api/interface1.yaml</inputSpec>
<generatorName>spring</generatorName>
<enablePostProcessFile>true</enablePostProcessFile>
<configOptions>
    <sourceFolder>src/main/java</sourceFolder>
    <library>spring-boot</library>
    <java8>true</java8>
    <interfaceOnly>true</interfaceOnly>
    <useOptional>true</useOptional>
</configOptions>
private JsonNullable<String> firstField = JsonNullable.undefined();
@Bean
public Module jsonNullableModule() {
   return new JsonNullableModule();
}