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 之外,除了注释关键字在其自己的文档中定义的内容外,不应该期望实现使用注释关键字执行任何操作。
我的 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 之外,除了注释关键字在其自己的文档中定义的内容外,不应该期望实现使用注释关键字执行任何操作。