【问题标题】:How should you reference the JSON schema that a JSON object conforms to?您应该如何引用 JSON 对象所遵循的 JSON 模式?
【发布时间】:2019-10-03 21:42:32
【问题描述】:

还有一个问题与我在此处提出的问题 (Can you specify the schema URI on a JSON document that conforms to a JSON schema?) 类似,该问题被标记为 (How to reference schema of json which is top level array) 的副本,但我对该问题进行了细微的变化。

虽然在 JSON 模式定义 (https://json-schema.org/) 中似乎没有任何内容,但人们是否遵循最佳实践来在 JSON 对象/文档中指示它符合(或符合)哪个 JSON 模式应该符合)?

在 JSON 对象/文档中使用 $schema 标签来引用模式会不会出错?似乎引用它所遵循的架构也是一种“版本”JSON 对象/文档的好方法。

【问题讨论】:

  • 您的问题似乎与已结束的问题非常相似。但是,封闭的问题不是另一个问题的重复。我已投票重新提出另一个问题。

标签: json jsonschema json-schema-validator


【解决方案1】:

我非常怀疑这个问题是否有“可接受”的答案。

没有什么可以阻止您将 $schema 属性用作您自己的个人约定的一部分。

这有一些现实世界的先例。一些 Azure 快速入门模板使用 $schema 来引用他们遵循的 JSON Schema,例如:https://github.com/Azure/azure-quickstart-templates/blob/master/101-azure-bastion/azuredeploy.parameters.json(感谢Mark T 的评论)

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
      "bastion-host-name": {
        "value": "GEN-UNIQUE-8"
    },
      "location": {
        "value": "southcentralus"
    }
  }
}

但是,由于缺乏官方指导,我们或许应该接受 schema-instance 的概念(取自 XSD)不适合轻量级定义语言,例如 jsonschema。

我很想了解您的用例,其中明确地将 JSON 实例与其模式链接是必需的。

【讨论】:

  • 我们将各种“事物”持久化为 JSON 对象。随着时间的推移,对象的模式(属性、结构等)必然会发生变化。每次模式更改时,所有实例都不太可能更新,因此引用对象在创建时所遵循的模式似乎是有意义的(基本上使用特定模式作为版本标识符)。不久前我已经看到它用一些 Azure 的东西完成了(很多天蓝色的配置以及快速启动模板都使用 $schema。我不确定它是否只是一个 MS 的东西或更通用
  • 以下是 Azure 快速入门模板的示例,这些模板使用 $schema 来引用他们遵循的 JSON 架构 - github.com/Azure/azure-quickstart-templates
  • @MarkT 你能链接到具体的例子吗?我找不到任何...
  • 抱歉耽搁了。这是一个具体的例子。 github.com/Azure/azure-quickstart-templates/blob/master/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多