JSON 架构 v4 中的 ID 属性

The id property in JSON schema v4

我正在尝试正确解析具有引用的更复杂的 JSON 模式。然而,id 属性 给我带来了很多麻烦,而且我不清楚它是如何从文档中工作的。以下是我仍然没有得到的东西:

"id" 是一个 URI。它可以是相对或绝对 URI。如果它是相对的,那么它是根据父解析范围解析的。如果它是绝对的,那么它不受父作用域的影响。

所以考虑到这些,记住

a) 它可以是一个 "arbitary id" 但它会被解释为一个相对 URI

b) 是 - 相对 URI 的解析发生在父范围

c) 一个空的 "$ref" 就可以了

规范没有告诉您的一件事是,如果顶级 URI 是相对 URI,该怎么做——它将根据什么进行解析。它可以依赖于实现。

作为最佳实践,我建议您在顶层仅使用一个 "id",并使所有 $refs 都与此相关(除非您有充分的理由进入另一个方式)。