我需要通过以下方式验证JSON文件:
const setupSchema = fs.readFileSync(schemaDir +'/setup.json');
并编译:
const setupValidator = ajv.compile(setupSchema);
我的问题是那条线:
console.log( setupValidator('') );
始终返回
true
,即使验证器的参数是空字符串(如上所述)。我认为加载方式不好,但是...需要问比我聪明的人。 最佳答案
从快速入门指南:(http://json-schema.org/)
这意味着,如果您的架构是空对象或不使用JSON架构词汇表,那么Ajv的compile
函数将始终生成始终通过的验证函数:
var Ajv = require('ajv');
var ajv = new Ajv({allErrors: true});
var schema = {
foo: 'bar',
bar: 'baz',
baz: 'baz'
};
var validate = ajv.compile(schema);
validate({answer: 42}); //=> true
validate('42'); //=> true
validate(42); //=> true
根据JSON Schema规范,您的
setup.json
可能不是正确加载的,还是不是架构。