首页 > 解决方案 > 在定义对象中定义的子模式可以引用另一个子模式吗?

问题描述

可能答案是如此明显,甚至不值得在任何地方提及,但我找不到任何关于此的明确信息。模式的定义(在 JSON 模式的“定义”内定义)可以引用另一个定义吗?

我还没有运行我的代码,因为我仍在编写模式并且我不想把它搞砸。这是我正在尝试做的一个例子:

"definitions": {
    "apple": {
        "description": "a type of fruit",
        "edible": "boolean"
    },
    "fruit": {
        "description": "a type of food",
        "edible": "boolean",
        "items": {
           "$ref": "#definitions/apple"
        }
    }
}

标签: jsonjsonschema

解决方案


这是有趣的!

从定义中引用另一个定义是有效的。

如果您的引用是在items“示例”而不是“示例”下,那么这将是有效的,因为“项目”的值必须是模式,而“示例”的值未定义为模式。(“示例”必须是一个数组,仅供参考。)


推荐阅读