46

有时,我注意到以下 JSON 模式:

{
    "type": "object",   
    "properties": {
        "address": {
                   "type": "string",
                   "required": true
            }
     }

}

对比

{
    "type": "object",   
    "properties": {
        "address": {
                   "type": "string",
                   "optional": false
            }
     }

}

那么上面例子中的requiredvs有什么区别呢?optional

4

3 回答 3

40

JSON 模式的IETF 草案 v4仅定义required而不包括optional.

引用草案 v4中的部分required

有效值:这个关键字的值必须是一个数组。这个数组必须至少有一个元素。此数组的元素必须是字符串,并且必须是唯一的。

成功验证的条件:如果对象实例的属性集包含此关键字数组值中的所有元素,则该对象实例对该关键字有效。

实际上, usingrequired使得名称未包含在给定字符串数组中的所有属性都是可选的。

于 2014-01-06T12:06:24.720 回答
24

实际上,它们是等价的表达方式,只是使用了不同版本的标准。

optional来自 v2,required来自 v3。您应该确保为您的工具使用正确的工具(尽管理想情况下,如果可以的话,您应该迁移到 v4)。

于 2013-10-24T11:35:34.253 回答
3

这意味着对象的属性必须具有非undefinedaddress(if required)。

于 2013-04-25T01:29:11.430 回答