Должна ли JSON-схема требовать, чтобы документы объявляли `$schema`?

JSON-схема говорит, что документ JSON может объявить схему, которой документ соответствует, используя $schema собственность Пример:

{
    "$schema": "http://example.com/example_fancy_schema#",
    "example_fancy_property": "cute fluffy kittens"
}

где схема выглядит так:

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Example Fancy Schema",
    "description": "The schema that describes the example format.",
    "type": "object",
    "properties": {
        "example_fancy_property": {
            "type": "string",
            "enum": ["cute fluffy kittens"]
        }
    },
    "additionalProperties": false,
    "required": [ "example_fancy_property" ]
}

Означает ли это, что нужно добавить свойство для этого в фактическую схему, например:

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Example Fancy Schema",
    "description": "The schema that describes the example format.",
    "type": "object",
    "properties": {
        "$schema": {
            "type": "string",
            "enum": ["http://example.com/example_fancy_schema#"]
        },
        "example_fancy_property": {
            "type": "string",
            "enum": ["cute fluffy kittens"]
        }
    },
    "additionalProperties": false,
    "required": [ "$schema", "example_fancy_property" ]
}

Ни один из примеров на веб-сайте JSON-схемы, кажется, не объявляет об этом, поэтому я подозреваю, что никто не должен объявлять это. Но мне все равно любопытно:)

1 ответ

Решение

$schema Ключевое слово рекомендуется для использования в схемах JSON, чтобы обозначить версию используемого стандарта схемы.

Однако это не имеет особого значения в данных. По HTTP есть рекомендуемые способы связать данные со схемой, но $schema собственность не одна из них.

Другие вопросы по тегам