Схема Json обеспечивает объект по умолчанию, но не его свойства - PullRequest
0 голосов
/ 07 июня 2019

У меня есть свойство где-то в моей схеме JSON, которое имеет тип "объект" и имеет значение по умолчанию - объект со своими свойствами и их значениями. Внутри схемы объекта у меня есть перечисленные свойства и их типы, но нет значений по умолчанию для них. Вопрос в том, к чему приведет это свойство, если будет указано только одно из значений, а не остальные? Будут ли они по умолчанию соответствовать тому, что имело бы место при условии указания?

"autoStart": {
            "type": "object",
            "default":{
                "foo": true,
                "bar": 3
            },
            "properties":{
                "foo": {
                    "type": "boolean"
                },
                "bar": {
                    "type": "number"
                }
            }
        }

Если указан JSON

"autoStart": {
  "foo": false
}

что будет с "баром"?

1 Ответ

1 голос
/ 07 июня 2019

Что делает default ? Ничего согласно спецификации

default - ключевое слово аннотации. Аннотация заключается в предоставлении информации реализации или приложению, чтобы они могли определять свое собственное дополнительное поведение. Это означает, что любое поведение, которое НИЧЕГО делает с default, зависит от реализации или приложения.

Давайте посмотрим, что говорится в спецификации ...

Нет ограничений на значение этого ключевого слова. Когда несколько вхождений этого ключевого слова применимы к один экземпляр, реализации ДОЛЖНЫ удалить дубликаты.

Это ключевое слово может использоваться для предоставления значения JSON по умолчанию, связанного с определенной схемой. РЕКОМЕНДУЕТСЯ, чтобы значением по умолчанию было
действителен для связанной схемы.

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

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

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