OpenAPI 生成器序列化的 LocalDateTime 错误

bra*_*ren 5 java gradle-plugin openapi swagger-codegen openapi-generator

我正在使用 OpenAPI Generator 创建客户端,但是当我尝试发出 POST 请求时,LocalDateTime 会被序列化为整数数组,看起来像

{
  "startDate": [ 2019, 11, 13, 0, 0 ],
  "endDate": [ 2020, 12, 31, 0, 0 ]
}
Run Code Online (Sandbox Code Playgroud)

我正在等待这个结果,像 ISO 字符串一样解析

{
  "startDate": "2019-11-13T00:00",
  "endDate": "2020-12-31T00:00"
}
Run Code Online (Sandbox Code Playgroud)

我的gradle配置是这样的:

dependencies {
  compile 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.10.3'
  classpath 'org.openapitools:openapi-generator-gradle-plugin:4.2.3'
}

task generateClientDS(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask) {
  inputSpec = "$rootDir/specifications/client-ds.yaml".toString()
  outputDir = "$rootDir".toString()
  generatorName = 'java'
  library = 'resttemplate'
  apiPackage = 'com.example.gen.clients.clientds.api'
  modelPackage = 'com.example.gen.clients.clientds.dto'
  modelNameSuffix = 'DTO'
  configOptions = [
          hideGenerationTimestamp: 'true',
          dateLibrary: 'java8'
  ]
  typeMappings = [
          OffsetDateTime: 'java.time.LocalDateTime'
  ]
}
Run Code Online (Sandbox Code Playgroud)

应用程序属性

spring.jackson.serialization.write-dates-as-timestamps=false
Run Code Online (Sandbox Code Playgroud)

我什至按原样添加了它,但它不起作用,知道出了什么问题吗?

小智 1

我犯了同样的错误。经过几个小时的寻找,在这里找到了答案。问题出在我的 API 文档中。尝试改变它。

startDate:
          type: string
          format: 'yyyy-mm-dd'
Run Code Online (Sandbox Code Playgroud)