有时,我注意到以下JSON模式:
{
"type": "object",
"properties": {
"address": {
"type": "string",
"required": true
}
}
}
VS
{
"type": "object",
"properties": {
"address": {
"type": "string",
"optional": false
}
}
}
那么上面例子中required
与optional
的区别是什么?
答案 0 :(得分:31)
JSON架构的IETF draft v4
仅定义required
,不包括optional
。
引用第4版草案required
上的section:
有效值:此关键字的值必须是数组。这个数组必须有 至少一个元素。这个数组的元素必须是字符串,并且必须是 唯一的。
验证成功的条件:对象实例对此有效 关键字,如果其属性集包含此关键字数组中的所有元素 值。
实际上,使用required
可选择所有属性
该名称不包含在给定的字符串数组中。
答案 1 :(得分:20)
实际上,它们是等效的表达式,但使用的是不同版本的标准。
optional
来自v2,required
来自v3。您应该确保使用正确的工具(尽管如果可以的话,最好转到v4)。
答案 2 :(得分:4)
这意味着该对象必须具有undefined
属性的非address
值(如果required
)。