разрешить атрибут $ ref из схемы JSON (черновик 7), используя Draft7Validator и RefResolver в python - PullRequest
0 голосов
/ 02 марта 2020

У меня есть черновая схема 7 json, в которой атрибут $ ref имеет ссылку на другую схему json из другого каталога. Я пытаюсь разрешить $ ref с помощью RefResolver из библиотеки jsonschema. Вот код:

resolver = RefResolver('file:'+<schemaFile.json>, schema)
Draft7Validator(schema, resolver=resolver).validate(json_data_tobeValidated)

Я получаю эту ошибку от Draft7Validator

Traceback (most recent call last):
  File "draft7Validator_test.py", line 63, in <module>
    st=_validate(schemaPath, jd, 1)
  File "draft7Validator_test.py", line 42, in _validate
    Draft7Validator(schema, resolver=resolver).validate(json_data)
  File "D:\Anaconda\lib\site-packages\jsonschema\validators.py", line 347, in validate
    for error in self.iter_errors(*args, **kwargs):
  File "D:\Anaconda\lib\site-packages\jsonschema\validators.py", line 323, in iter_errors
    for error in errors:
  File "D:\Anaconda\lib\site-packages\jsonschema\_validators.py", line 274, in properties
    schema_path=property,
  File "D:\Anaconda\lib\site-packages\jsonschema\validators.py", line 339, in descend
    for error in self.iter_errors(instance, schema):
  File "D:\Anaconda\lib\site-packages\jsonschema\validators.py", line 323, in iter_errors
    for error in errors:
  File "D:\Anaconda\lib\site-packages\jsonschema\_validators.py", line 274, in properties
    schema_path=property,
  File "D:\Anaconda\lib\site-packages\jsonschema\validators.py", line 339, in descend
    for error in self.iter_errors(instance, schema):
  File "D:\Anaconda\lib\site-packages\jsonschema\validators.py", line 323, in iter_errors
    for error in errors:
  File "D:\Anaconda\lib\site-packages\jsonschema\_validators.py", line 303, in allOf
    for error in validator.descend(instance, subschema, schema_path=index):
  File "D:\Anaconda\lib\site-packages\jsonschema\validators.py", line 339, in descend
    for error in self.iter_errors(instance, schema):
  File "D:\Anaconda\lib\site-packages\jsonschema\validators.py", line 323, in iter_errors
    for error in errors:
  File "D:\Anaconda\lib\site-packages\jsonschema\_validators.py", line 247, in ref
    scope, resolved = validator.resolver.resolve(ref)
  File "D:\Anaconda\lib\site-packages\jsonschema\validators.py", line 734, in resolve
    return url, self._remote_cache(url)
  File "D:\Anaconda\lib\site-packages\jsonschema\validators.py", line 744, in resolve_from_url
    raise exceptions.RefResolutionError(exc)
jsonschema.exceptions.RefResolutionError: Expecting value: line 35 column 1 (char 50)

Невозможно понять это конкретное исключение.

...