java - openapi generator maven plugin可空属性问题

我试图在使用 openapi 3 规范设计的 API 中引入可空属性。这个想法是始终将属性返回给客户端,无论它们的值是否为 null。

YAML 文件(我首先尝试没有默认,结果相同):

       property:
          type: integer
          nullable: true
          default: null

生成的 Java 代码:

  @JsonProperty("property")
  private JsonNullable<Integer> property = JsonNullable.undefined();

API 的响应:

  "property": {
    "present": true
  }

因此无论属性是否为 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>

最佳答案

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

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

您在问题中提到的答复说该属性存在但不是实际值,当对象未正确序列化时会发生这种情况。只需注册 JsonNullableModule 即可指示如何序列化 jackson 等解析器。

@Bean
public Module jsonNullableModule() {
   return new JsonNullableModule();
}

至少在 org.openapitools:jackson-databind-nullable:0.2.1 版本中我没有看到这样的问题,这意味着不需要明确注册上面的内容,因为它是由图书馆本身。

https://stackoverflow.com/questions/60429225/

相关文章:

cassandra - JanusGraph 错误 : "Could not find type f

google-cloud-platform - 使用 GCP AutoML 进行自定义实体提取的预测

c# - 在 Visual Studio 2019 中添加带有 css 类的 div 的键盘快捷方式

python - pandas 将嵌套字典转换为 mutiIndex 行和列

javascript - 禁用移动浏览器滑动返回行为?

python - "Chrome not reachable"在非 headless 模式下使用 X

reactjs - Auth0 并使用react,将用户重定向到注册页面

oracle - JDBC 故障转移连接字符串

mysql - 无法在 AWS-mysql 中创建表并抛出错误代码 1044。拒绝用户 'user1

swift - 使用 Storyboard将 Collection View 布局设置为组合布局