gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 07:12:20 28 4
gpt4 key购买 nike

我试图在使用 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 版本中我没有看到这样的问题,这意味着不需要明确注册上面的内容,因为它是由图书馆本身。

关于java - openapi generator maven plugin可空属性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60429225/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com