Json 模式为对象提供默认值,但不为其属性提供默认值

Json schema provides a default for an object but not for its properties

我的 JSON 模式中某处有一个 属性 类型 "object" 并且有一个默认值 - 一个具有其属性及其值的对象。在对象模式中,我列出了属性并指定了它们的类型——但它们没有默认值。问题是 - 如果只提供一个值而不提供其余值,这个 属性 会产生什么结果?如果提供注释,他们会默认吗?

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

如果提供的json是

"autoStart": {
  "foo": false
}

"bar" 会怎样?

default做什么?不符合规范

default 是注释关键字。注释是为实现或应用程序提供信息,以便它们可以定义自己的附加行为。这意味着任何对 default 做任何事情的行为都是特定于实现或应用程序的。

让我们看看规范是怎么说的...

There are no restrictions placed on the value of this keyword. When multiple occurrences of this keyword are applicable to a single sub-instance, implementations SHOULD remove duplicates.

This keyword can be used to supply a default JSON value associated with a particular schema. It is RECOMMENDED that a default value be
valid against the associated schema.

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

除了注释集合和 return 之外,除了注释关键字在其自己的文档中定义的内容外,不应该期望实现使用注释关键字执行任何操作。