Можно ли создать схему JSON, которая может проверять хэш-карту / словарь в отличие от объекта? - PullRequest
0 голосов
/ 08 ноября 2019

Итак, если у меня есть объект, давайте назовем его Person, например:

{
  "email": "foo@bar.com",
  "first"" "foo",
  "last": "bar"
}

Этот объект Person вполне может быть проверен с помощью JSON Schema. Проблема заключается в том, что несколько из них расположены в словаре, где поле электронной почты используется в качестве ключа, а объект является значением. Например:

{
  "foo@bar.com": {
    "email": "foo@bar.com",
    "first"" "foo",
    "last": "bar"
  },
  "you@your.com": {
    "email": "you@your.com",
    "first": "Bob",
    "last": "Bobton"
  },
  "me@mine.com": {
    "email": "me@mine.com",
    "first": "Deb",
    "last": "Debbington"
  }
}

Это распространенный способ структурирования данных. Помимо проверки значений Person, которые могут быть хорошо обработаны схемой JSON, существует несколько проверок, которые могут быть полезны в словаре:

  • Ключ является электронным письмом и может быть проверенкак единое целое.
  • Значение всегда Персона.
  • Ключ всегда идентичен полю электронной почты значения.
  • Все ключи уникальны.

Возможно ли реализовать эти проверки словаря с использованием схемы JSON?

1 Ответ

0 голосов
/ 10 ноября 2019

Первые два требования, да. Вы можете использовать patternProperties.

Другие два, которые вы просите, невозможны при использовании JSON Schema. Извините.

Я ожидаю, что вы получите данные в первой форме от API, подтвердите, а затем уменьшите карту до желаемой структуры.

...