我们可以使用 swagger-generator 在模型变量上生成 @JsonFormat 吗?

Sai*_*ala 9 java swagger spring-boot swagger-2.0 swagger-codegen

我在 yml 文件中有一个变量

startDate:
 type:string
 format:date
Run Code Online (Sandbox Code Playgroud)

我正在使用 swagger-generator 从 yml 生成 java 代码。

它正在生成一个 startDate 变量,如下所示

@JsonProperty("startDate")
private LocalDate startDate = null; 
Run Code Online (Sandbox Code Playgroud)

但我需要如下

@JsonProperty("startDate")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private LocalDate startDate = null; 
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

Lak*_*gha 0

这里的问题是您试图在不使用正确的杰克逊模块/依赖项的情况下序列化Java 8 LocalDate使用@JsonFormat。如果您查看注释文档,它会说;

常见用途包括在替代表示形式之间进行选择 - 例如,将日期序列化为数字(Java 时间戳)还是字符串(例如 ISO-8601 兼容时间值) - 以及使用 pattern() 属性配置确切的详细信息。

https://fasterxml.github.io/jackson-annotations/javadoc/2.8/com/fasterxml/jackson/annotation/JsonFormat.html

项目中没有关于swagger codegen如何指定特定于语言的配置选项的适当文档,我只在下面的票证中看到了这些配置选项;

https://github.com/swagger-api/swagger-codegen/issues/7795

根据该问题,您可以强制 Swagger codegen 使用java8 dateLibrary.

  • 如果模型是手写的,但在我的情况下模型类是由 swagger-codegen 生成的,那么您的解决方案肯定有效。所以我无法在模型类中添加@@JsonSerialize。我尝试添加 jackson-datatype-jsr310 依赖项,但没有成功。正如我的问题所述,我正在寻找一种通过 swagger-codegen 生成 @JsonFormat 标签的方法。 (3认同)