JSON:使用 id 引用 json 模式

标签 json jsonschema

所以我有一个 json 模式,在这个模式中我在同一个 json 文件中引用另外两个模式,这工作正常。

{
  "id": "http://ourdns.co.za/public/assets/json/formSchema.json",
  "type": "object",
  "properties": {
    "person": {
      "type": "object",
      "id": "#person",
      "properties": {
        "first_name": {
          "title": "What is your first name",
          "type": "string"
        },
        "last_name": {
          "title": "What is your last name",
          "type": "string"
        }
      }
    },
    "person_api": {
      "type": "object",
      "id": "#person"
    }
  }
}

我想要的是一个根 json 模式,它引用根外部的另外两个 json 模式。这与我当前的模式不同,我将所有模式都放在一个文件中(不理想)。有一个小问题,我不能使用 $ref 作为引用关键字,因为我们使用的插件是 does not support这个。但是我们发现 id 可以用作引用关键字。(JsonForm 是插件)。我们如何使用 id 关键字获取它们,因为它似乎不起作用?

{
  "id": "http://ourdns.co.za/public/assets/json/formSchema.json",
  "type": "object",
  "properties": {
    "person_api": {
      "type": "object",
      "id": "public/assets/person.json"
    }
  }
}

1) 我们如何从外部调用相同的数据,例如.. "id": "public/assets/person.json" 而不是将它们全部组合在一个文件中? 2) 例如,如果我们只需要来自 person.json 模式的 person.firstname,我们将如何检索特定属性?

{
  "id": "http://dsn.co.za/public/assets/json/person.json",
  "type": "object",
  "properties": {
    "first_name": {
      "title": "What is your first name",
      "type": "string"
    }
  }
}

最佳答案

您不能单独使用 id 执行引用。对于引用,您必须使用$ref

id 关键字允许您为架构提供 URL 作为引用的目标:

{
    "id": "http://example.com/schemas/example",
    "type": "object",
    "properties": {
        "arr1": {
            "id": "#item-schema",
            ...
        },
        "arr2": {"$ref": "#item-schema"}
    }
}

这样您就可以使用漂亮的 URL(例如 http://example.com/schemas/example#item-schema)而不是使用 JSON 指针片段语法来引用模式。它还允许您在不更改 URL 的情况下重新组织架构(例如,将项目架构移动到 definitions 中)。

但是,对于引用本身,您仍然需要使用 $ref。如果您需要此功能,则需要在您使用的任何工具中支持它。

关于JSON:使用 id 引用 json 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19564212/

相关文章:

json - 分页 jsonschema/hyperschema 时保留查询参数

java - Jackson 从字符串 JSON 对象生成 JsonSchema

jsonschema - i18n 和 JSON 模式?

javascript - 如何创建嵌套的 json 数据?

javascript - 在 JSON 字段中查找序列

jsonschema - 在 JSON 模式中,定义和引用可重用的枚举类型?

json - 如何递归验证 JSON 模式?

json - 如何在jq walk中引用父对象?

javascript - 使用 Mustache 循环 json

json - 有没有办法自定义 Azure Function SignalR 服务绑定(bind) (Microsoft.Azure.WebJobs.Extensions.SignalRService) 的 json 设置?