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 来执行此操作,尽管它的语法现在让我不知所措。很确定,如果你让它打印命令的帮助,它会告诉你。
我在使用通过亲属关系引用子模式的父模式时遇到问题 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 来执行此操作,尽管它的语法现在让我不知所措。很确定,如果你让它打印命令的帮助,它会告诉你。