【问题标题】:Reference subkeys from external, remote JSON schema从外部、远程 JSON 模式中引用子键
【发布时间】:2021-08-07 20:32:35
【问题描述】:

我已经开始在我的一个项目中使用 JSON Schema。我仍然无法理解 $id$ref 如何协同工作,以及 tools$idbase_uri 等如何协同工作。这是一个场景:

我在文件schema.json 中定义了我的架构。 该文件托管在我的网站https://example.com/schema.json 上。 架构的$idhttps://example.com/schema/$schema"http://json-schema.org/draft-07/schema"

我可以在 https://www.jsonschemavalidator.net/ 的验证器中使用此架构,方法是为其提供一个引用 URL 的架构,并且验证有效(无效实例失败等)。

{
  "$ref": "https://example.com/schema.json"
}

我可以使用"$ref": "https://example.com/schema.json#/properties/subkey" 解析子键。 "$ref": "https://example.com/schema#/properties/subkey" 无法解析,可能是因为在模式存储中找不到它?

所以现在,如果我想让它工作 - "$ref": "https://example.com/schema#/properties/subkey",我是否必须将文件重命名为简单的 schema?或者还有其他方法可以实现吗?

【问题讨论】:

    标签: validation jsonschema


    【解决方案1】:

    "schema" 和 "schema.json" 指向不同的文件,因此您要么需要重命名文件以匹配 $ref 中的 uri,要么更改 $ref 以引用正确的文件名。

    本指南可能会有所帮助:Structuring a complex schema

    【讨论】:

    • 对,$id 总是包含文件本身的绝对 URI(此处为 URL),而不是自动发现的 schema 对象或什么?问是因为我没有看到很多以 $id 字段结尾的 .json 文件。也许巧合……
    • 如果只支持一种文件格式,或者如果根据 Accept 标头返回不同的格式,则 URI 中不需要扩展名,因此许多应用程序会选择将其省略,因此URI 看起来更好。
    猜你喜欢
    • 2022-12-07
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2018-06-28
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多