我想知道模式草案03是否可行。我已经在其他地方使用了依赖项,我认为可能需要创造性地使用它们,以便使用它们来指定required某些字段的属性。
required
我目前的最佳尝试(无效)将使您对我的追求有所了解。我想要一个默认值,当另一个字段具有特定值时是可选值。
{ "description" : "An address...", "type" : "object", "properties" : { "postcode": { "type" : "string", // postcode should be required by default "required" : true, // postcode shouldn't be required if the country is new zealand "dependencies" : { "country" : { "enum" : ["NZ", "NZL", "NEW ZEALAND"] }, "postcode" : { "required" : false } } }, "country": { "type" : "string", "enum" : [ // various country codes and names... ], "default" : "AUS" } } }
草案的第3版绝对可以做到这一点。由于您具有允许的国家/地区的完整列表,因此您可以执行以下操作:
{ "type": [ { "title": "New Zealand (no postcode)", "type": "object", "properties": { "country": {"enum": ["NZ", "NZL", "NEW ZEALAND"]} } }, { "title": "Other countries (require postcode)", "type": "object", "properties": { "country": {"enum": [<all the other countries>]}, "postcode": {"required": true} } } ], "properties": { "country": { "type" : "string", "default" : "AUS" }, "postcode": { "type" : "string" } } }
因此,您实际上为架构定义了两种子类型,一种用于需要邮政编码的国家,另一种用于不需要邮政编码的国家。
编辑 -v4等效项非常相似。只需将顶级"type"数组重命名为"oneOf"。
"type"
"oneOf"