我们是否可以使用 swagger-generater 在模型变量上生成@JsonFormat



我在yml文件中有一个变量

startDate:
 type:string
 format:date

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

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

@JsonProperty("startDate")
private LocalDate startDate = null; 

但我需要如下

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

有人可以帮助我吗?

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

常见用途包括在替代表示之间进行选择 -- 对于 例如,是否将日期序列化为数字(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 代码生成使用 java8 dateLibrary .

你可以尝试用这种方式去萨里化:

ObjectMapper objectMapper = new ObjectMapper();
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
objectMapper.setDateFormat(df);
JSONObject jsonObject=new JSONObject(new Oferta().fechaInicio(new Date()));
String json="";
try{
    json=objectMapper.writeValueAsString(new Oferta().fechaInicio(new Date()).fechaAceptacion("15/554/20"));
    jsonObject=new JSONObject(json);
}catch (Exception e){
}

public class Oferta {
    @JsonProperty("fechaInicio")
    private Date fechaInicio = null;
    @JsonProperty("fechaAceptacion")
    private String fechaAceptacion = null;
}
您可以

添加x-field-extra-annotation以添加所需的任何注释。文档在这里: https://openapi-generator.tech/docs/generators/java

startDate:
 type:string
 format:date
 x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")'

然后生成的模型类将具有注释JsonFormat

相关内容

  • 没有找到相关文章

最新更新