Getting "jsonschema.exceptions.RefResolutionError" and don't know why

443 views
Skip to first unread message

contact-8da

unread,
Jan 26, 2020, 10:02:47 PM1/26/20
to jsonschema - An implementation of JSON Schema for Python
Version of jsonschema I'm using:

jsonschema --version
3.2.0

Steps

In xterm one I do the following:

python -m http.server 8008

In xterm two I do the following:


jsonschema -i canadian_address1.json canadian_address_schema2.json


In xterm one I see this:

Serving HTTP on 0.0.0.0 port 8008 (http://0.0.0.0:8008/) ...
127.0.0.1 - - [26/Jan/2020 18:56:42] "GET /canadian_province_postalcode_schema.json HTTP/1.1" 200 -


In xterm two I see this:

jsonschema -i canadian_address1.json canadian_address_schema2.json
Traceback (most recent call last):
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/validators.py", line 774, in resolve_from_url
    document = self.store[url]
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/_utils.py", line 22, in __getitem__
    return self.store[self.normalize(uri)]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/validators.py", line 777, in resolve_from_url
    document = self.resolve_remote(url)
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/validators.py", line 860, in resolve_remote
    result = requests.get(uri).json()
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/requests/models.py", line 889, in json
    self.content.decode(encoding), **kwargs
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/json/__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/json/decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 10 column 2 (char 288)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/myuser/.conda/envs/fcraas-api-env/bin/jsonschema", line 8, in <module>
    sys.exit(main())
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/cli.py", line 76, in main
    sys.exit(run(arguments=parse_args(args=args)))
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/cli.py", line 87, in run
    for error in validator.iter_errors(instance):
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/validators.py", line 328, in iter_errors
    for error in errors:
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/_validators.py", line 286, in properties
    schema_path=property,
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/validators.py", line 344, in descend
    for error in self.iter_errors(instance, schema):
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/validators.py", line 328, in iter_errors
    for error in errors:
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/_validators.py", line 286, in properties
    schema_path=property,
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/validators.py", line 344, in descend
    for error in self.iter_errors(instance, schema):
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/validators.py", line 328, in iter_errors
    for error in errors:
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/_validators.py", line 259, in ref
    scope, resolved = validator.resolver.resolve(ref)
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/validators.py", line 766, in resolve
    return url, self._remote_cache(url)
  File "/home/myuser/.conda/envs/fcraas-api-env/lib/python3.7/site-packages/jsonschema/validators.py", line 779, in resolve_from_url
    raise exceptions.RefResolutionError(exc)
jsonschema.exceptions.RefResolutionError: Expecting ',' delimiter: line 10 column 2 (char 288)



Here's canadian_address1.json (fake data not a real person) :

{

    "address": {

"name":"Soren Henderson",
"number":"1775",
"street":"Hyde Place",
"street2": "Street",
"city":"Toronto",
"province":"ON",
"postalCode":"O99 9O9"

    }


}

Here's canadian_address_schema2.json:

{
    "title":"Canada provincial postal abbreviations",
    "description":"Postal abbreviations for Canada",
    "definitions":
    {
"CAN_province":
50
{
    "type":"string",
    "enum":["AB", "BC", "MB", "NB", "NL", "NS", "NT",
    "NU", "ON", "PE", "QC", "SK", "YT"]
},
"CAN_postalCode":
{
    "type":"string",
    "pattern":"^[A-Z][0-9][A-Z]( )?[0-9][A-Z][0-9]$"
}
    }
}


Why am I seeing this error? I did this where the #/defintions/CAN_* schema were embedded within canadian_address_schema2.json and it worked. Thanks,

contact-8da

unread,
Jan 26, 2020, 10:10:42 PM1/26/20
to jsonschema - An implementation of JSON Schema for Python
Forgot: 

Here's  canadian_address_schema2.json. The file above is actually canadian_province_postalcode_schema.json:

{
    "title":"Postal address for Canada",
    "description":"Postal address for Canada",
    "type":"object",
    "properties":
    {
"address":
{
    "type":"object",
    "properties":
    {
"name":{"type":"string"},
"number":{"type":"string"},
"street":{"type":"string"},
"street2":{"type":"string"},
"city":{"type":"string"},
"province":
{
},
"postalCode":
{
}
    },
    "additionalProperties":false,
    "required":["name", "number", "street", "city", "province", "postalCode"]
}
    }
}

contact-8da

unread,
Jan 26, 2020, 10:14:39 PM1/26/20
to jsonschema - An implementation of JSON Schema for Python


On Sunday, January 26, 2020 at 7:02:47 PM UTC-8, contact-8da wrote:
OK found the error:

In  canadian_province_postalcode_schema.json I had this:

{
"CAN_province":
50


Clear syntax error. I just have type these out. Then I see the error :/
Reply all
Reply to author
Forward
0 new messages