【发布时间】:2022-10-18 22:15:36
【问题描述】:
我有从我在 SwaggerHub 中编码的 YAML API 定义文件生成的 SpringBoot Java(服务器存根)代码。我使用开放 API 3。
我无法让这个生成的代码工作,看起来很麻烦。
我无法修复的错误是这个:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.OffsetDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through reference chain: io.swagger.v3.oas.models.OpenAPI["components"]->io.swagger.v3.oas.models.Components["schemas"]->java.util.TreeMap["CancelData"]->io.swagger.v3.oas.models.media.ObjectSchema["properties"]->java.util.TreeMap["dateStamp"]->io.swagger.v3.oas.models.media.DateTimeSchema["example"])
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77) ~[jackson-databind-2.13.1.jar!/:2.13.1]
at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1300) ~[jackson-databind-2.13.1.jar!/:2.13.1]
at com.fasterxml.jackson.databind.ser.impl.UnsupportedTypeSerializer.serialize(UnsupportedTypeSerializer.java:35) ~[jackson-databind-2.13.1.jar!/:2.13.1]
当我得到 API 文档 URL 时,我得到了它。
localhost:8080/.../api-docs
我尝试了所有可以在网上找到的建议,但没有任何帮助。
我认为这与我在 YAML 文件中的这个字段有关。
dateStamp:
type: string
format: date-time
description: The creation date and time of this cancel transaction
example: "2022-01-28T05:03:57Z"
我尝试注册 JavaTimeModule 以及网络上建议的所有内容。我不明白这个错误。我不知道即使我把它放在正确的地方。但这是我尝试过的修复。
@Bean
ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
return objectMapper;
}
我把它放在SwaggerDocumentationConfig。
一般来说,我不明白为什么这个生成的代码有这么多错误。
https://github.com/FasterXML/jackson-modules-java8/issues/219
serialize/deserialize java 8 java.time with Jackson JSON mapper
我应该如何解决这个问题?
【问题讨论】:
标签: java swagger openapi swagger-codegen