如何在JSON Schema中使用外部文件的定义?

时间:2017-09-24 08:47:57

标签: jsonschema ajv

我正在尝试使用$ref从另一个json架构导入定义,但收到以下错误:

can't resolve reference ../base/definitions.schema.json#/definitions/datetime from id #

{
  "$schema": "http://json-schema.org/draft-06/schema#",

  "definitions": {
    "datetime": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
  }
}

{
  "$schema": "http://json-schema.org/draft-06/schema#",
  "properties": {
    "active": {"type": "boolean"},
    "created_at": { "$ref": "../base/definitions.schema.json#/definitions/datetime" },
    "name": { "$ref": "../base/base/definitions.schema.json#/definitions/name" },
    "updated_at": { "$ref": "../base/definitions.schema.json#/definitions/datetime" }
  },
  "required": ["name"],
  "type": "object"
}

目录结构:

api
-- base
  -- definitions.schema.json
-- country
  -- country.schema.json

我通过使用绝对路径,file网址和路径的其他几种组合尝试了几种组合。不知道发生了什么。

架构验证器:ajv@5.1.1

1 个答案:

答案 0 :(得分:4)

您需要使用" addSchema"添加模式。方法。 $ ref相对于" id"属性(" $ id"在草案06中),ajv不会(并且不能)使用文件路径。

编辑:将$ ref部分添加到docs