JSON Schema条件:基于另一个字段的值需要字段

时间:2014-11-23 18:07:15

标签: json jsonschema

我试图实现这个条件:根据另一个字段的值需要字段,即如果请求带有" index":" true"然后存在" id"要求的元素:true。

以下是示例模式:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "test title",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/Item"
      },
      "minItems": 0
    }
  },
  "required": [
    "data"
  ],
  "definitions": {
    "Item": {
      "type": "object",
      "properties": {
        "id": {
          "type": [
            "integer",
            "string"
          ]
        },
        "type": {
          "type": "string"
        }
      }
    }
  }
}

如何实施?

任何指针都会有所帮助。

1 个答案:

答案 0 :(得分:7)

你的样品chema对我来说很奇怪,但是对于票证说明中的验证案例你可以使用json shema的这一部分:

"properties": {
    "data": {
        "oneOf": [
            {
                "type": "object",
                "required": [
                    "index"
                ],
                "properties": {
                    "index": {
                        "type": "boolean",
                        "enum": [false]
                    }
                }
            },
            {
                "type": "object",
                "required": [
                    "index",
                    "id"
                ],
                "properties": {
                    "index": {
                        "type": "boolean",
                        "enum": [true]
                    },
                    "id": {
                        "type": "boolean"
                    }
                }
            }
        ]
    }
}

如果你想要验证一个参数,当其他参数等于某个值时,这个技巧对你有帮助。