为什么 Swagger Codegen 将 ON/OFF 字符串枚举转换为 TRUE/FALSE?

Why does Swagger Codegen convert an ON/OFF string enum to TRUE/FALSE?

我正在使用 Swagger Codegen 3.0.19,也尝试过 OpenAPI Generator 4.0.3。

Java环境:

Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

亚军:

java -jar ./libs/openapi-generator-cli-4.3.0.jar  generate \
       -i pet.yaml \
       -g spring \
       -o ./OUTPUT/api/

这是我的 OpenAPI 架构:

openapi: "3.0.0"
....
CaptureStatus:
  type: object
  description: Holds current capture status.
  properties:
    status:
      type: string
      enum:
        - ON
        - OFF
      description: Capture status values.
....

输出为:

  ....
  public enum StatusEnum {
    TRUE("true"),

    FALSE("false");

    private String value;

    StatusEnum(String value) {
      this.value = value;
    }
  ....

为什么 codegen 将 ON/OFF 枚举转换为 TRUE/FALSE?当我使用 Swagger Editor GUI 生成时它不会这样做。

在 YAML 1.1 中,onoffynyesnoboolean values. This was changed在 YAML 1.2 中,此版本不再将这些值视为布尔值。

看起来 Swagger Codegen 和 OpenAPI Generator 使用 YAML 1.1 解析器。在这种情况下,您需要将 'ON''OFF' 括在引号中以将它们视为字符串:

      enum:
        - 'ON'
        - 'OFF'