【问题标题】:jsonschema: validate list of dictionaries with specifc keysjsonschema:使用特定键验证字典列表
【发布时间】:2020-02-17 18:13:53
【问题描述】:

我正在尝试为字典列表(又名对象数组)编写一个 jsonschema,我在其中验证字典中的键。这个例子中的标签是我感兴趣的。我想允许任意数量的标签,并想验证标签字典中始终存在namevalue 字段。这是一个表示为 yaml 的示例输入。

some_field1: "value_a"
some_field2: "value_b"
labels:
- name: "bar"
  value: "foo"
- name: "baz"
  value: "blah"

这是我到目前为止拼凑的内容,但它不会验证字典中的键。我不确定在这种情况下 AdditionalProperites 是如何工作的,但我在网上找到了一个示例。

properties:
  some_field1:
    type: string
    default: 'value_a'
  some_field2:
    type: string
    default: 'value_b'
  labels:
    type: array
    items:
      type: object
      additionalProperties:
        type: string

我的用例是我正在尝试为 Kubernetes 创建自定义资源定义 (CRD),在其中验证输入,我的理解是 CRD 使用 openapi3/jsonschema 验证来定义其字段。

我无法找到有关如何使用特定键验证字典列表的信息。我将不胜感激您提供的任何帮助。

【问题讨论】:

    标签: json validation kubernetes jsonschema openapi


    【解决方案1】:

    字典的已知/固定键可以在properties 中定义并包含在required 列表中:

      labels:
        type: array
        items:
          type: object
          required: [name, value]
          properties:
            name:
              type: string
            value:
              type: string
          additionalProperties:
            type: string
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    相关资源
    最近更新 更多