覆盖继承的json模式

时间:2018-07-11 08:28:21

标签: jsonschema

如何覆盖由“ allOf”关键字继承的json模式中定义的验证规则?

示例:

{
  "$schema": "http://json-schema.org/draft-06/schema",
  "title": "My JSON Schema",
  "description": "",
  "definitions": {
    "a": {
      "type": "object",
      "properties": {
        "b": {
          "type": "object",
          "properties": {
            "c": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            }
          },
          "required": [
            "c"
          ]
        }
      },
      "required": [
        "b"
      ]
    }
  },
  "properties": {
    "main": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/definitions/a"
        }
      ]
    },
    "sub": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/definitions/a"
        }
      ]
    }
  }
}

{ "$schema": "http://json-schema.org/draft-06/schema", "title": "My JSON Schema", "description": "", "definitions": { "a": { "type": "object", "properties": { "b": { "type": "object", "properties": { "c": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [ "c" ] } }, "required": [ "b" ] } }, "properties": { "main": { "type": "object", "allOf": [ { "$ref": "#/definitions/a" } ] }, "sub": { "type": "object", "allOf": [ { "$ref": "#/definitions/a" } ] } } }

json模式定义了两个对象:

  • 主要
  • sub

两个对象都从定义的对象“ a”继承其属性 但是对象“ sub”应具有针对属性b.c的其他验证规则(当前为minLength 1和maxLength 100)。

所以下面的json当然是无效的:

{
  "main" :{
    "b": {
      "c": "This property has a min length"
    }
  },"sub" : {
    "b": {
      "c": ""
    }
  }
}

如何覆盖属性b.c的验证规则?

1 个答案:

答案 0 :(得分:1)

JSON Schema规范目前无法执行此操作。