如何在jschema中检查一个属性多于另一个属性?

时间:2016-12-07 09:54:32

标签: json swagger swagger-ui jsonschema

    'MyObj': {
                    'type': 'object',
                    'properties': {
                        'width': {
                            'type': 'integer',
                            'minimum': 1
                        },
                        'height': {
                            'type': 'integer',
                            'minimum': 1
                        },
                        'sheetWidth': {
                            'type': 'integer',
                            'minimum': 1,
                        },
                        'sheetHeight': {
                            'type': 'integer',
                            'minimum': 1,
                        }
                    },
                    'required': [
                        'width',
                        'height'
                    ]
                }

是否可以检查超过'身高'超过' sheetWidth'?

似乎我必须使用自定义验证,但我不确定,用json-schema检查它会很棒。

我将不胜感激任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用$data reference

支持的建议Ajv来完成此操作
{
  "properties": {
    "height": {
      "type": "integer",
      "minimum": { "$data": "1/sheetWidth" }
    },
    "sheetWidth": {
      "type": "integer",
      "minimum": 1,
    }
  }
}

答案 1 :(得分:1)

由于您标记了此问题swagger - Swagger / OpenAPI规范使用subset of JSON Schema Draft 4,但不支持此类验证。

您只能在属性说明中口头记录:

'height': {
    'type': 'integer',
    'minimum': 1
    'description': 'Must be more than sheetWidth.'
},