将变量作为依赖项从主 YAML 模式导入到子模式

问题描述 投票:0回答:1

我有一个 YAML 架构,分为两个文件。像这样:

main.yaml

type: object
properties:
  a:
    description: variable a
    type: string
  b:
    description: variable b
    $ref: support.yaml

和 support.yaml

type: object
properties:
  c:
    description: variable c
    type: string
  d:
    description: variable d
    type: string

我有以下情况:当 support.yaml 中的变量

a
存在时,需要 main.yaml 中的变量
d
。我知道
dependencies
中有关键字
jsonschema
但我不太熟悉在模式中引用事物的语法或者是否可能。

您知道这是否可行或有任何可以提供帮助的文档吗?

yaml jsonschema json-schema-validator python-jsonschema
1个回答
0
投票

根据您使用的版本,您可以执行以下操作:

使用草稿-07

  • 使用
    allOf
    来包装您的条件语句,这使您可以灵活地在将来添加更多条件语句
  • 要求
    b
    d
    均存在并已定义
  • 然后需要定义
    a

src:https://tour.json-schema.org/content/05-Conditional-Validation/04-if-then-else

# main.yaml
$schema: http://json-schema.org/draft-07/schema#
$id: https://example.org/schema/main.yaml
type: object
properties:
  a:
    description: variable a
    type: string
  b:
    description: variable b
    $ref: 'support.yaml#'
allOf:
  - if:
      required:
        - b
      properties:
        b:
          properties:
            d: true
    then:
      required:
      - a


# support.yaml
$schema: 'http://json-schema.org/draft-07/schema#'
$id: 'https://example.org/schema/support.yaml'
type: object
properties:
  c:
    description: variable c
    type: string
  d:
    description: variable d
    type: string
© www.soinside.com 2019 - 2024. All rights reserved.