【发布时间】:2022-01-23 05:44:20
【问题描述】:
我有一个简化后的架构,如下所示:
{
"$schema": "https://json-schema.org/draft-07/schema#",
"$id": "https://example.com/schemata/my.schema.json#",
"type": "boolean",
"default": true,
"$defs": {
"oid": {
"title": "Object ID",
"type": "string"
},
"oid_list": {
"title": "Object Ids List",
"type": "array",
"items": {"$ref": "#/$defs/oid"},
"uniqueItems": true
}
}
}
我正在尝试将它与 Ajv 一起使用来验证一些 JSON 数据。
const Ajv = require ('ajv');
const ajv = new Ajv();
const fs = require ('fs');
const schema = JSON.parse(fs.readFileSync('./schemata/my.schema.json'));
const validate = ajv.compile(schema.$defs.oid_list);
const data = ['wibble', 'wobble'];
const valid = validate (data);
上面的代码给了我一个"missingRef": "#$defs/oid" 错误。
但是 vscode 中的架构验证器在解析引用并将架构验证应用于我告诉它查看的文件时没有问题。
我是 Ajv 的新手。希望这是一个简单的错误。
提前感谢您的帮助。
【问题讨论】:
-
consts 很多。你所有的代码都是这样写的吗? -
这有点像货物崇拜 - 我从这里的例子开始 ajv.js.org/guide/getting-started.html 但是,如果数量不是有意改变的,是的,我总是声明它们
const。
标签: node.js json jsonschema ajv