Имеет ли схема JSON какие-либо стандарты или соглашения для связи документа экземпляра со схемой, которой он соответствует? - PullRequest
0 голосов
/ 08 октября 2018

Я новичок в Json Schema, но много работал с xsd (xml-схемами) в прошлом.
С помощью xml-схемы можно пометить элемент в своем xml-документе с помощью атрибута 'schemaLocation'.Этот атрибут может использоваться проверяющим анализатором xml для проверки того, что содержимое и структура элемента соответствуют связанной с ним схеме.В xml вы делаете что-то вроде этого:

<animal 
    xsi:schemaLocation="
        http://www.zippy.com 
        http://foo.bar.com/animal.xsd">
    type="dog"
    name="rover"/>

Мне интересно: есть ли какой-нибудь стандартный способ сделать это в схеме JSON?
Я не смог найти ничего в спецификации или учебных руководствах, через которые я прошел.
Я надеюсь, что может быть что-то вроде этого:

{
    "schema": "http://foo.bar.com/animal.schema.json",

    "animal": {
        "type": "dog",
        "name": "rover",
    }
}

Моя цель состоит в том, чтобы каждый документ JSON, который возвращает моя служба REST, содержал аннотацию (атрибут "схема" или что-то подобное).указывая на схему, которая проверяет этот конкретный экземпляр ... Затем я могу при желании запустить службу в «режиме проверки», в котором она автоматически проверяет исходящие ответы, чтобы убедиться, что они соответствуют схеме.

Любой совет, который высоко ценится.

1 Ответ

0 голосов
/ 09 октября 2018

Не существует стандартного способа для документа JSON идентифицировать схему, которая его описывает.Одна из целей разработки JSON-схемы состоит в том, чтобы она ничего не навязывала структуре проверяемого документа JSON.

Однако схема JSON действительно определяет способ связывания схемы JSON с документом в контекстеHTTP ответ.Вы можете использовать заголовок describedby Link для идентификации схемы.

HTTP/1.1 200 OK
Content-Type: application/json
Link: <http://foo.bar.com/animal.schema.json>; rel="describedby"

{
    "animal": {
        "type": "dog",
        "name": "rover"
    }
}

http://json -schema.org / latest / json-schema-core.html # rfc.section.10.1

...