jsonschema-rs
jsonschema-rs copied to clipboard
Can't resolve local url schema
I have two json schemas, both placed inside resources/schema
directory. Root dir is a cargo project dir. Main schema (extracted and simplified from my project):
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "file://resources/programSegment.schema.json",
"$defs": {
"portType": {
"type": "array",
"description": "Port list",
"items": {
"type": "string"
}
}
},
"type": "object",
"properties": {
"a": {
"type": "string"
},
"b": {
"$ref": "file://resources/schema/ports.schema.json#/$defs/portType"
}
}
}
Second schema:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "file://resources/ports.schema.json",
"$defs": {
"portType": {
"type": "array",
"description": "Port list",
"items": {
"type": "string"
}
}
}
}
When I create Json example, if portType
is placed in the same file with the rest of the schema, everything works with local $ref. If I try to reference to another file, like in the example, validation fails.
After some debugging, I found that the issue may lie inside resolver.rs
file. The current code simply tries to open an absolute path. As I work on Windows, it can't work, because of Windows path format. Also, that approach is not portable. Currently, I wrote my own resolver, who finds schemas inside directory inside cargo project. It would be nice to have such feature implemented.
Code clearly shows, that it's possible to set custom resolver instead of a default