Есть ли способ исключить нулевые свойства при использовании 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"