springdoc-openapi-webflux-ui 与 java.time.Duration 的问题(ISO 8601 持续时间格式)

PRA*_*ASH 5 java duration swagger spring-boot springdoc-openapi-ui

Swagger 文档将持续时间显示为

  "duration": {
    "seconds": 0,
    "nano": 0,
    "zero": true,
    "negative": true,
    "units": [
      {
        "dateBased": true,
        "timeBased": true,
        "durationEstimated": true
      }
    ]
  },
Run Code Online (Sandbox Code Playgroud)

但实际的格式是 ISO 8601 持续时间格式(PT0S),以下是代码段。有没有办法正确格式化文档?

任务文件

@Document(collection = "tasks")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder(toBuilder = true)
public class Task {

    public enum Status {
        todo, inprogress, done
    }

    @Id
    private String id;

    private String name;

    private String description;

    private Status status = Status.todo;

    private Duration estimatedDuration = Duration.ZERO;

    private Duration duration = Duration.ZERO;
    }
Run Code Online (Sandbox Code Playgroud)

初始化

@SpringBootApplication
@OpenAPIDefinition(info = @Info(title = "APIs v1.0.2", version = "1.0.2", description = "Documentation APIs v1.0.2"))
public class SBApplication {
......

}
Run Code Online (Sandbox Code Playgroud)

pom依赖

    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-webflux-ui</artifactId>
        <version>1.4.3</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

小智 3

尝试

    import io.swagger.v3.oas.annotations.media.Schema;

    ...

    @Schema(type = "string", format = "duration")
    private Duration estimatedDuration = Duration.ZERO;

    @Schema(type = "string", format = "duration")
    private Duration duration = Duration.ZERO;
  
Run Code Online (Sandbox Code Playgroud)