我有一个名为schema的文件夹,其中包含employee.schema文件。
在下面的代码片段中,address属性是一个数组类型。
我想将address.schema文件保存在employee.schema所在的同一文件夹中,并在employee.schema中引用它
这是否可以使用draft-03架构?
{
"type":"object",
"$schema": "http://json-schema.org/draft-03/schema",
"properties":{
"empId":{
"type":"integer",
"required":false
},
"empName":{
"type":"string",
"required":true,
"minLength":10,
"maxLength":20
},
"contactno":{
"type":"string",
"required":true,
"minLength":10,
"maxLength":10
},
"salary":{
"type":"integer",
"required":true
},
"address":{
"type":"array",
"items":{
"type": "object",
"properties": {
"city":{
"type":"string",
"required":true
},
"pincode":{
"type":"string",
"required":true
}
}
}
}
}
}
答案 0 :(得分:0)
我认为草案03规范说明了一切:
此属性定义包含完整
的架构的URI 此架构的表示。当验证者遇到这个时 属性,它应该用模式替换当前模式 由值的URI引用(如果已知且可用)并且重新加上 验证实例。此URI可以是相对的或绝对的,并且
相对URI应该根据当前的URI来解析 架构。
(https://tools.ietf.org/search/draft-zyp-json-schema-03#section-5.28)
只需定义"地址"作为" $ ref"指向其他架构。
{
"type": "object",
"$schema": "http://json-schema.org/draft-03/schema",
"properties": {
"empId": {
"type": "integer",
"required": false
},
"empName": {
"type": "string",
"required": true,
"minLength": 10,
"maxLength": 20
},
"contactno": {
"type": "string",
"required": true,
"minLength": 10,
"maxLength": 10
},
"salary": {
"type": "integer",
"required": true
},
"address": {
"$ref": "address.schema"
}
}
}
然后" address.schema"看起来像这样:
{
"type":"array",
"$schema": "http://json-schema.org/draft-03/schema",
"items": {
"type": "object",
"properties": {
"city": {
"type":"string",
"required":true
},
"pincode": {
"type":"string",
"required":true
}
}
}
}