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

How to check that one property more than another in jschema?

    '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'
                    ]
                }

是否可以检查比'height'多于'sheetWidth'?

好像我必须使用自定义验证,但我不确定,最好用 json-schema 检查一下。

如有任何帮助,我将不胜感激。

你可以用提议的 $data reference that is supported in Ajv

{
  "properties": {
    "height": {
      "type": "integer",
      "minimum": { "$data": "1/sheetWidth" }
    },
    "sheetWidth": {
      "type": "integer",
      "minimum": 1,
    }
  }
}

由于您标记了这个问题 swagger - Swagger/OpenAPI 规范使用 subset of JSON Schema Draft 4,它不支持那种验证。

您只能在 属性 描述中口头记录:

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