Схема JSON, одна из проблем проверки - PullRequest
1 голос
/ 20 сентября 2019

Я работаю над созданием сложной схемы JSON и у меня возникают проблемы с проверкой конструкции "oneOf".

Я создал очень простую схему с использованием "oneOf" и простого файла JSON, чтобы продемонстрировать проблему.

Схема JSON:

{
  "$schema": "http://json-schema.org/draft-07/schema#",

  "type": "object",
  "oneOf":[
  {"properties": {"test1": {"type": "string"}}},
  {"properties": {"test2": {"type": "number"}}}
  ]
}

Файл JSON:

{
  "test2":4
}

Когда я проверяю файл JSON по сравнению со схемой с помощью jsonschema.validate, я ожидаю, что это будетдействительный.Однако я получаю ответ об ошибке:

Traceback (most recent call last):
  File "TestValidate.py", line 11, in <module>
    jsonschema.validate(instance=file, schema=schema, resolver=resolver)
  File "C:\Python36\lib\site-packages\jsonschema\validators.py", line 899, in validate
    raise error
jsonschema.exceptions.ValidationError: {'test2': 4} is valid under each of {'properties': {'test2': {'type': 'number'}}}, {'properties': {'test1': {'type': 'string'}}}

Failed validating 'oneOf' in schema:
    {'$schema': 'http://json-schema.org/draft-07/schema#',
     'oneOf': [{'properties': {'test1': {'type': 'string'}}},
               {'properties': {'test2': {'type': 'number'}}}],
     'type': 'object'}

On instance:
    {'test2': 4}

Я не понимаю, как 'test2': 4 может быть допустимым для "test1": {"type": "string"}.

...