JSON Схема не удалось разрешить $ ref, Ожидаемый StartObject Bolean, получил строку - PullRequest
0 голосов
/ 17 марта 2020

Подсхема в другом файле не может быть решена с помощью $ref

Сообщение об ошибке: Unexpected token encountered when reading value for '$ref'. Expected StartObject, Boolean, got String. Path 'properties.organization.items.properties.$ref'

Root схема

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "https://example.com/schema_root.json",
    "type": "object",
    "properties": {
        "organization": {
            "description": "Organization information associated with the sample",
            "type": "array",
            "items": {
                    "$ref": "organisation.json#"
            }
        }
    }
}

Подсхема в том же каталоге в файле organisation.json

{
    "$id": "organisation",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Organisation",
    "additionalProperties": false,
    "type": "object",
    "properties": {
        "Name": {
            "type": "string"
        },
        "Role": {
            "type": "string"
        }
    }
}

Мне кажется, что схема root может найти подсхему. Однако из-за несоответствия типов данных он не может загрузить подсхему. Но я не уверен, что такое несоответствие?

В сообщении об ошибке Expected StartObject.got String Я не уверен, что такое StartObject и к чему относится String.

1 Ответ

0 голосов
/ 17 марта 2020

Есть две проблемы.

  1. На пути ссылки есть расширение (.json), но нет пути к идентификатору.
  2. Ссылки разрешены для $id изменяя способ определения второй схемы.

Надеюсь, это не слишком кратко, но вот что происходит.

// From Root Schema
"$id":  "http://example.com/schema_root.json"
"$ref": "organization.json#"

// $ref resolves to ...
"$ref": "http://example.com/organization.json#"

// Expected $id
"$id": "http://example.com/organization.json"

// Actual $id
"$id":                    "organization"

Идентификатор из ссылки не не соответствует $id во второй схеме, поэтому валидатор не может найти нужную ему схему.

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