未指定的属性
在下方的代码片段中,required关键词指定了此对象需要四个属性。但是,在这四个必需的属性中,仅定义了三个。第四个属性,city还未定义。已定义的属性称为已指定,而未定义的属性称为未指定。参见代码片段下方的截图。
{ "\$schema": "http://json-schema.org/draft-04/schema#", "description": "JSON Schema generated by XMLSpy v2016 (https://www.altova.com)", "type": "object", "properties": { "emailtype": { "type": "string" }, "emailaddress": { "type": "string", "format": "email" }, "citycode": { "type": "number" } }, "required": [ "emailtype", "emailaddress", "citycode", "city" ], "additionalProperties": false }
|
在设计视图中,未指定的属性用红色标记,因为它在Schema中被设为是必需的,但尚未定义。虽然JSON Schema本身是有效的, 但根据其验证的实例文档将是无效的。这是因为:(i) 如果city属性不存在,则该文档无效,因为city属性是必需的;(ii) 如果city属性存在,则因为尚未定义city属性,并且没有属性通配符允许该属性存在(参见下方隐式指定属性部分),该文档无效。
要为未指定的属性创建定义,请执行以下操作:
1.在设计视图中选择未指定的属性。
2.在“详细信息”输入助手中,选中已指定复选框(参见上方截图)。或者,通过上下文菜单修改已指定标记。
3.根据需要修改属性的定义。
隐式指定属性
属性可以通过添加适当的模式属性或属性通配符来隐式指定。下方截图显示已添加一个属性通配符。名为city的实例属性将匹配此通配符。因此,在Schema中,city属性由此通配符隐式指定。根据此Schema,包含city属性的实例文件是有效的。
请注意隐式指定的属性和属性通配符中的相应图标。每个图标都是指向另一个属性的链接。双击一个图标可以选择另一个属性。