java 从OpenAPI规范生成`LocalTime`

xzv2uavs  于 2023-04-04  发布在  Java
关注(0)|答案(2)|浏览(197)

我看到OpenAPI中有一个date的字符串,通过使用dateLibrary=java8,我们可以使用openapi-generator生成LocalDate字段。
但是有没有办法生成LocalTime字段呢?OpenAPI中没有time,而date-time生成OffsetDateTime
编辑:很难提供一个可重复的例子,因为问题是关于我不能做的事情,但一些说明性的例子是我想要的东西沿着:
模式规范:

Visit:
  type: object
  parameters:
    visitor:
      type: string
    timeOfVisit:
      type: string
      format: time

但是显然time并没有出现在OpenAPI规范中。

public class Visit {
  private String visitor;
  private LocalTime timeOfVisit;

  // Getters, setters, etc
}

肯定有某种方法可以让openapi-generator产生这个输出,不是吗?我发现有一些import-mappingsLocalTimeMap到org.joda.time.*,所以似乎有一种方法可以让它产生LocalTime类型,但我还没有找到它

tzcvj98z

tzcvj98z1#

解决了!实际上这真的很容易,但作为OpenAPI的初学者,很难找到解决方案。
openapi-generator-cli generate -g java --type-mappings time=LocalTime
“哇,哇,完成了!”
编辑:但这并没有使用java.time.LocalTime作为类型,因为前面(在问题中)提到了import-mappings,所以最终的命令是:

openapi-generator-cli generate -g java --type-mappings time=LocalTime --import-mappings LocalTime=java.time.LocalTime
iyr7buue

iyr7buue2#

我发现在pom.xml的configOptions标记中有一个dateLibrary选项。这样我就不必手动在OffsetDateTime(最初生成)和LocalDateTime之间进行Map。
如果你在配置标签中添加true,它会打印出所有的选项。

dateLibrary
        Option. Date library to use (Default: threetenbp)
            joda - Joda (for legacy app only)
            legacy - Legacy java.util.Date (if you really have a good reason not to use threetenbp
            java8-localdatetime - Java 8 using LocalDateTime (for legacy app only)
            java8 - Java 8 native JSR310 (preferred for jdk 1.8+) - note: this also sets "java8" to true
            threetenbp - Backport of JSR310 (preferred for jdk < 1.8)

相关问题