在json模式文件中使用$ ref

问题描述 投票:0回答:1

我有一个名为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
                     }
                 }  
            }
          }
   }
}
rest mule raml
1个回答
0
投票

我认为草案03规范说明了一切:

此属性定义包含完整的架构的URI 此架构的表示。验证者遇到此问题时 属性,它应该用模式替换当前模式 由值的URI引用(如果已知且可用)并且重新 验证实例。这个URI可以是相对的,也可以是绝对的 相对URI应该根据当前的URI来解析 架构。

(Qazxswpoi)

只需将“地址”定义为指向其他模式的“$ ref”。

https://tools.ietf.org/search/draft-zyp-json-schema-03#section-5.28

然后“address.schema”看起来像这样:

{
  "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"
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.