json-схема описывает значения ключа объекта (когда ключи являются динамическими) - PullRequest
0 голосов
/ 19 июня 2019

У меня есть объект с динамическими именами ключей, и я хочу описать схему значений, которую могут иметь ключи, например:

{
   "properties": {
      "usersById": {
         "additionalProperties": {
            "properties": {
               "email": {
                  "type": "boolean"
               },
               "phone": {
                  "type": "boolean"
               },
               "address": {
                  "type": "boolean"
               }
            },
            "type": "object"
         },
         "type": "object"
      }
   },

   ...
}

Это, похоже, ничего не делает на этапе проверки(используя AJV JS pkg).Я хочу ограничиться только этой схемой модели:

{
  usersById: {
    '1234abcd': {
      email: true,
      phone: false,
      address: false,
    },
  },
}

1 Ответ

1 голос
/ 20 июня 2019

Вы можете использовать patternProperties, что похоже на properties, но вы используете регулярное выражение.

https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.5.5

Пример ...

Схема:

{
  "type": "object",
  "patternProperties": {
    "^S_": { "type": "string" },
    "^I_": { "type": "integer" }
  },
  "additionalProperties": false
}

Допустимый экземпляр:

{ "I_0": 42 }

Неверный экземпляр:

{ "S_0": 42 }

Пример снят с https://json -schema.org / понимание-json-схема / reference / object.html # pattern-properties

В качестве примечания полезно помнить, что эти регулярные выражения не являются неявно привязанными, поэтому вам потребуется их привязывать, если вам нужны привязанные регулярные выражения.

...