jsonschema: проверить список словарей с указанными ключами c - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь написать jsonschema для списка словарей (он же массив объектов), где я проверяю ключи в словаре. Интересующие меня метки в этом примере. Я хотел бы разрешить произвольное количество меток и хотел бы убедиться, что поля name и value всегда существуют в словаре меток. Вот пример ввода, представленного как yaml.

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

Вот то, что я пока собрал, но это не проверяет ключи в словарях. Я не уверен точно, как дополнительныеProperites работает в этом случае, но я нашел пример в Интернете.

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

Мой пример использования: я пытаюсь создать пользовательское определение ресурса (CRD) для Kubernetes где я проверяю входные данные, и я понимаю, что CRD используют проверку openapi3 / jsonschema для определения своих полей.

У меня проблемы с поиском информации о том, как проверить список словарей с указанными c ключами. Буду признателен за любую помощь, которую вы можете предложить.

1 Ответ

2 голосов
/ 17 февраля 2020

Известные / фиксированные ключи словаря могут быть определены в properties и включены в список required:

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