Ссылка на JSON-схему из json аналогичным образом XML ссылается на XML-схему - PullRequest
0 голосов
/ 28 февраля 2019

Когда я определил XML-схему, я могу затем ссылаться на нее из XML, говоря, что этот XML должен соответствовать ссылочной схеме.Таким образом, я могу принудительно проверить такой XML и также могу дать ценный совет человеку, который собирается редактировать этот файл, потому что редакторы XML, поддерживающие XML-схему, будут использовать такую ​​ссылку для генерации автозаполнения, что значительно облегчит редактирование.

Однако я не вижу таких ссылок в документации схемы JSON.Например: https://json -schema.org / Learn / Getting-Start-Step-by-Step.html

Похоже, это не является частью стандарта, или я простоне могу найти его.

Вот пример схемы XSD с использованием ссылки:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://example.org/definitions/product">
    <xsd:element name="product">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="id" type="xsd:long" maxOccurs="1" minOccurs="1"/>
                <xsd:element name="name" type="xsd:string" maxOccurs="1" minOccurs="1"/>
                <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" />
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

А вот XML, который использует эту схему, ссылаясь на ее логическое имя: http://example.org/definitions/product

<product:product xmlns:product="http://example.org/definitions/product">
    <id>1</id>
    <name>One</name>
    <description>The One</description>
</product:product>

Так что теперь любой может начать редактировать его и, если поддерживается, получить автозаполнение своим редактором на основе ссылочной схемы XSD.

Но как насчет JSON?Схема?

Если у меня есть схема JSON, подобная этой:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "http://example.org/definitions/product",
  "title": "product",
  "type": "object",
  "properties": {
    "id": {
      "type": "long"
    },
    "name": {
      "type": "string"
    },
    "description": {
      "type": "string"
    }
  },
  "required": [ "id", "name" ]
}

И фактическая схема JSON такая:

{
  "id": 1,
  "name": "One",
  "description": "The one"
}

Тогда как я могу на самом деле связатьJSON для схемы я ожидаю, что это будет соответствовать?

1 Ответ

0 голосов
/ 28 февраля 2019

Вы правы, это не является частью стандарта.

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

https://tools.ietf.org/html/draft-handrews-json-schema-01#section-10.1

РЕКОМЕНДУЕТСЯ, чтобы экземпляры, описанные схемой, предоставляли ссылку на загружаемую схему JSON с использованием отношения ссылки "descriptionby",
, как определено в протоколе связанных данных 1.0., раздел 8.1
[W3C.REC-ldp-20150226].

В HTTP такие ссылки могут быть присоединены к любому ответу с помощью заголовка Link [RFC8288].Примером такого заголовка может быть:

Ссылка: http://example.com/my-hyper-schema#; rel = "описаны by"

...