Spring Boot Swagger中ZoneOffset的±HH:MM标准ISO 8601格式,而不是JSON

m4pnthwp  于 2023-08-04  发布在  Spring
关注(0)|答案(1)|浏览(84)

我目前正在Java应用程序,它与订单的工作。在一些@RestController方法中,我返回一个Order类的示例,它包含一个timezone字段。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Order {
   private ZoneOffset timezone;
}

字符串
当我用spring-boot工具生成swagger时,它会为响应创建一个JSON,看起来像这样

{
"timezone": {
    "totalSeconds": 0,
    "id": "string",
    "rules": {
      "fixedOffset": true,
      "transitions": [
        {
          "offsetBefore": {
            "totalSeconds": 0,
            "id": "string"
          },
          "offsetAfter": {
            "totalSeconds": 0,
            "id": "string"
          },
          "duration": {
            "seconds": 0,
            "nano": 0,
            "negative": true,
            "zero": true,
            "units": [
              {
                "dateBased": true,
                "timeBased": true,
                "durationEstimated": true
              }
            ]
          },
          "gap": true,
          "dateTimeBefore": "2023-02-27T18:33:30.403Z",
          "dateTimeAfter": "2023-02-27T18:33:30.403Z",
          "instant": "2023-02-27T18:33:30.403Z",
          "overlap": true
        }
      ],
      "transitionRules": [
        {
          "month": "JANUARY",
          "timeDefinition": "UTC",
          "standardOffset": {
            "totalSeconds": 0,
            "id": "string"
          },
          "offsetBefore": {
            "totalSeconds": 0,
            "id": "string"
          },
          "offsetAfter": {
            "totalSeconds": 0,
            "id": "string"
          },
          "dayOfWeek": "MONDAY",
          "dayOfMonthIndicator": 0,
          "localTime": {
            "hour": 0,
            "minute": 0,
            "second": 0,
            "nano": 0
          },
          "midnightEndOfDay": true
        }
      ]
    }
  }
}


这不是人类可读的。
我希望swagger生成默认值,比如+01:00(就像我向API发送请求时,它会返回响应一样)。
我尝试使用注解,如

@ApiModelProperty(example = "+01:00")


或者是

@ApiParam(defaultValue="+01:00")


,但对我来说什么都不起作用。
我知道spring-boot工具可以为ZonedDateTime生成一个人类可读的json(如下所示

"time": "2023-02-27T18:33:30.403Z"


)。所以我希望有办法为ZoneOffset做同样的事情。
我不能替换它在不同的计算中使用,并将其转换为字符串和背部似乎有点问题。

zd287kbt

zd287kbt1#

我在io.swagger.v3.oas.annotations.media.Schema中找到了解决方案

@Schema(example = "+01:00")
private ZoneOffset timezone;

字符串
产生的结果和我预期的一样

相关问题