0

我正在使用JSON Schema Draft-07. 我有一个如下所示的 JSON Schema,它可以按预期工作

{
"tests": {
      "type": "object",
      "required": [
        "name",
        "desc"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "desc": {
          "type": "string"
        }
      }
    }
  }

但是如果我refer同样type使用definitionsiblings properties\rules不会生效,例如

JSON Schema Store

{
  "my-schema.json": {
    "$id": "my-schema.json",
    "$schema": "http://json-schema.org/draft-07/schema",
    "definitions": {
      "objectParameter": {
        "type": "object"
      }
    },
    "properties": {
      "tests": {
        "$ref": "#/definitions/objectParameter",
        "properties": {
          "desc": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "desc"
        ]
      }
    },
    "required": [
      "tests"
    ],
    "type": "object"
  }
}

$ref不知道带来这里有什么不同。验证数据:"tests": {"namer": "12", "desc": "12"}或者"tests": {}应该失败但通过了。

4

1 回答 1

0

“不起作用”不是很具体,但是您是否可能使用遵循草案规范版本 7 或更早版本的实现,其中关键字的存在使$ref任何其他同级关键字的效果无效?如果是这样,您可以通过在子模式周围包裹“allOf”来解决这种情况:

"allOf": [
  { "$ref": ... },
  {
    "required": ...,
    "properties": { ... }
  }
]
于 2021-06-18T20:14:15.027 回答