1

$ref例如,在 JSON 模式中,在同一模式中拥有一个和其他属性是有效的。

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "title": "My schema",
    "properties": {
        "scripts": {
            "$ref": "#/definitions/scriptsBase",
            "description": "More docs.",
            "minLength": 10
        }
    },
    "definitions": {
        "scriptsBase": {
            "type": "string",
            "description": "Base Description",
            "minLength": 5
        }
    }
}

如果这是允许的,那么在解析$refed 和$refing 模式中定义的属性时有什么规则(在本例中minLengthdescription.allOf

4

1 回答 1

2

在json schema property description 和 "$ref" usage中找到了答案,基本上如果 $ref 存在,则所有其他属性都将被忽略。

https://datatracker.ietf.org/doc/html/draft-pbryan-zyp-json-ref-03#section-3

  1. 句法

JSON 引用是一个 JSON 对象,其中包含一个名为
“$ref”的成员,该成员具有一个 JSON 字符串值。例子:

{ "$ref": "http://example.com/example.json#/foo/bar" }

如果 JSON 值不具有这些特征,则不应将其解释为 JSON 引用。

"$ref" 字符串值包含一个 URI [RFC3986],它标识了被引用的 JSON 值的位置。
如果字符串值不符合 URI 语法规则,则会出现错误情况。
JSON 引用对象中除 "$ref" 之外的任何成员都应被
忽略。

于 2019-06-25T08:13:39.850 回答