swagger.yaml :: 如何生成具有“Long”数据类型和“Timestamp”数据类型的属性?

snm*_*ula 2 java swagger swagger-editor swagger-codegen

我正在使用swagger-codegen-maven-plugin基于生成 Java 类swagger.yaml规范。

phoneNumswagger.yaml下面添加了一个属性:

phoneNum:
    type: number
Run Code Online (Sandbox Code Playgroud)

我期望它生成带有IntegerLong数据类型的属性。
但它生成为BigDecimal phoneNum;

根据swagger 文档,有人提到使用format: int64

  phoneNum:
    type: number
    format: int64
Run Code Online (Sandbox Code Playgroud)

但是,它最终会产生 private BigDecimal phoneNum;

如果你们中有人遇到过类似的问题并有解决方法,请在此处分享。

谢谢你。

Rub*_*nDG 5

为了生成Long属性,您必须使用integeras type 和int64as format

phoneNum:
    type: integer
    format: int64
Run Code Online (Sandbox Code Playgroud)

看着AbstractJavaCodegen我认为没有办法生成一个Timestamp属性。
唯一可用的类型是:

  • org.threeten.bp.LocalDate
  • org.threeten.bp.OffsetDateTime
  • org.joda.time.LocalDate
  • org.joda.time.DateTime
  • java.time.LocalDate
  • java.time.LocalDateTime
  • java.time.OffsetDateTime
  • java.util.Date

这是一种将 OffsetDateTime 转换为 Timestamp 的方法

OffsetDateTime dateTime = OffsetDateTime.now();
Timestamp timestamp = Timestamp.valueOf(dateTime.atZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime());
Run Code Online (Sandbox Code Playgroud)