如何在JSON模式中引用其他属性值?

时间:2018-04-24 08:49:08

标签: json jsonschema

我有一个带有2个属性,minimumTolerance和maximumTolerance的JSON模式。我需要确保maximumTolerance的值不小于minimumTolerance&反之亦然。这在JSON模式中是否可行?

以下是我希望能够做到的一个例子:

{
  "$schema": "http://json-schema.org/draft-06/schema#",
  "title": "MinMax",
  "description": "Minum & Maximum",
  "type": "object",
  "properties": {
    "minimumTolerance":{
      "type": "number"
      "maximum":{
        "$ref":"maximumTolerance"
      }
    }
    "maximumTolerance":{
      "type": "number"
      "minumum": {
        "$ref":"minimumTolerance"
      }
    }
}

3 个答案:

答案 0 :(得分:2)

从规范草案7开始,无法使用JSON Schema执行此操作。

答案 1 :(得分:1)

如果您使用的是AJV,则可以使用$data和相对的JSON指针来完成。示例:

  low: {
    type: 'integer',
    maximum: {
      $data: '1/high',
    },
    exclusiveMaximum: true,
  },

  high: {
    type: 'integer',
    minimum: {
      $data: '1/low',
    },
    exclusiveMinimum: true,
  },

答案 2 :(得分:-1)

是的,但它可能不是您正在寻找的动态答案...在预期范围内输入最小值和最大值:

            "MinimumTolerance": {
                "type": "number",
                "minimum": 0,
                "maximum": 6000,
            },
            "MaximumTolerance": {
                "type": "number",
                "minimum": 6001,
            },