проверка схемы json с использованием patternProprties с tv4 - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть json, например:

{"post": {"someKey": {"anotherKey":"anotherValue"}}}

, и где первый ключ является допустимым методом http и может быть одним из следующих: post, get и т. Д. Все допустимые методы http во время выполнения.

Вот моя схема

var schema = {
    "type": "object",
    "patternProperties": {
        "^[a-z]+$": {
            'properties': {
              "type": "object",
              'properties': {
                'someKey':{
                    'type': 'object',
                    'properties': {
                      'anotherKey': {'type': 'string'},
                    }
                }
            }
        }
      }
   }
}

var valid = { "post": {"mkey":"myvalue"}}; //This is getting passed but I know that is wrong
var invalid = { "1": {"mkey":"myvalue"}}; //This is passed but actually it should fail

console.log(tv4.validateMultiple(invalid, schema));

Может кто-нибудь помочь?

1 Ответ

0 голосов
/ 26 сентября 2019

Я разобрался:

{
    'type': 'object',
    'patternProperties': {
        '^(POST|GET|DELETE|HEAD|PATCH|HEAD|PUT)$': {
            'additionalProperties': false,
            'type': 'object',
            'required': ['someKey'],
            'properties': {
                'someKey': {
                    'type': 'string'
                }
            }
        }
    }
}

Вот что следует отметить: 1. «дополнительные свойства»: false важно для patternProperties 2. Согласно спецификации схемы JSON, вы не можете иметь регистронезависимое соответствие и, следовательно,все в верхнем регистре

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...