Есть ли способ исключить нулевые свойства при использовании Groovy YAMLBuilder?

Я использую Groovy для создания документа спецификации openapi в YAML. Я использую YamlBuilder для преобразования объектной модели в строку YAML.

До сих пор он работал хорошо, но одна проблема, которую я заметил, заключается в том, что в выходных данных YAML присутствуют нулевые свойства. Это вызывает ошибки проверки в валидаторах openapi, которые я использую, поэтому я хотел бы удалить все нулевые свойства из вывода YAML.

Есть ли способ добиться этого? Я не вижу этого в документах. Эквивалентный JSONBuilder позволяет устанавливать параметры конфигурации, есть ли такая вещь для YamlBuilder?

Часть скрипта, которая генерирует YAML, выглядит так:

      def generateSpec() {
    println "============================\nGenerating Customer SPI spec\n============================"
    def components = generateComponents()
    def paths = generatePaths()

    def info = Info
        .builder()
        .title('Customer SPI')
        .description('A customer API')
        .version('0.1')
        .build()

    def customerSpec = [openapi: "3.0.3", components : components, info : info, paths : paths]
    def yaml = new YamlBuilder()
    yaml(customerSpec)

    println(yaml.toString())
    return yaml.toString()
}

Вот мой текущий результат. Обратите внимание nullстоимость formatсобственность на firstname, среди прочих.

      ---
openapi: "3.0.3"
components:
  schemas:
    Customer:
      type: "object"
      properties:
        firstname:
          type: "string"
          format: null
    ArrayOfCustomers:
      items:
        $ref: "#/components/schemas/Customer"
info:
  title: "Customer SPI"
  version: "0.1"
  description: "An API."
paths:
  /customers:
    parameters: null
    get:
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ArrayOfCustomers"
          description: "An array of customers matching the search criteria"
      summary: "Search customers"
  /customers/{customerRef}:
    parameters:
    - required: true
      schema:
        type: "string"
        format: null
      description: "Customer reference"
      in: "path"
      name: "customerRef"
    get:
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Customer"
          description: "A customer with the given reference"
      summary: "Load a customer"

0 ответов

Другие вопросы по тегам