JSON Schema中“required”与“optional”之间的区别是什么?

时间:2013-04-25 01:18:10

标签: json jsonschema

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

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

}

VS

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

}

那么上面例子中requiredoptional的区别是什么?

3 个答案:

答案 0 :(得分:31)

JSON架构的IETF draft v4 仅定义required,不包括optional

引用第4版草案required上的section

  

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

     

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

实际上,使用required可选择所有属性 该名称不包含在给定的字符串数组中。

答案 1 :(得分:20)

实际上,它们是等效的表达式,但使用的是不同版本的标准。

optional来自v2,required来自v3。您应该确保使用正确的工具(尽管如果可以的话,最好转到v4)。

答案 2 :(得分:4)

这意味着该对象必须具有undefined属性的非address值(如果required)。