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

JSON-Schema: Using relative URLs in $ref

我在使用通过亲属关系引用子模式的父模式时遇到问题 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

schema parent.json is invalid

error: can't resolve reference child.json# from id #

我在其他 3 个验证程序中遇到了类似的错误(child.json 无法解决),这表明我的架构不正确。

我做错了什么?

您是否将子架构作为依赖项传递?大多数验证器不会自动加载模式,需要明确告知每个模式。有一种方法可以使用 ajv-cli 来执行此操作,尽管它的语法现在让我不知所措。很确定,如果你让它打印命令的帮助,它会告诉你。