JSON-Schema:在$ ref中使用相对URL

时间:2018-01-11 17:01:16

标签: json jsonschema ajv

我在使用通过相对URL引用子架构的父架构时遇到了问题。

这是我的父模式:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "The parent schema.",
  "type": "object",
  "properties": {
    "parentProp1": { "type": "string"},
    "parentProp2": { "$ref": "child.json#"}
  }
}

这是我的孩子架构:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "The parent schema.",
  "type": "object",
  "properties": {
    "childProp1": { "type": "number" }
  }
}

这是我的数据:

{
  "parentProp1": "one",
  "parentProp2": {
    "childProp1": 1
  }
}

这是我在ajv-cli时遇到的错误:

  

$ ajv -s parent.json -d parent-test.json

     

架构parent.json无效

     

错误:无法解析来自id#

的引用child.json#

我得到了一个类似的错误(child.json无法解决)与其他3个验证器,这表明我的架构不正确。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您是否将子架构作为依赖项传递?大多数验证器不会自动加载模式,需要明确告知每个模式。有一种方法可以用ajv-cli来做到这一点,虽然它现在逃避了我的语法。非常确定,如果你打印它会告诉你的命令的帮助。