Схема Json предоставляет значение по умолчанию для объекта, но не для его свойств.

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

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

Если предоставленный json

"autoStart": {
  "foo": false
}

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


person Smytt    schedule 07.06.2019    source источник


Ответы (1)


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

default — это ключевое слово аннотации. Аннотация предназначена для предоставления информации реализации или приложению, чтобы они могли определить свое собственное дополнительное поведение. Это означает, что любое поведение, которое делает ЧТО-НИБУДЬ с default, зависит от реализации или приложения.

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

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

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

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

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

person Relequestual    schedule 07.06.2019