gpt4 book ai didi

javascript - AJV 的验证器总是返回真值

转载 作者:行者123 更新时间:2023-11-29 18:45:53 30 4
gpt4 key购买 nike

我需要通过以下方式验证 JSON 文件:

const setupSchema = fs.readFileSync(schemaDir +'/setup.json');

和编译:

const setupValidator = ajv.compile(setupSchema);

我的问题是那一行:

console.log( setupValidator('') );

始终返回 true,即使验证器的参数是空字符串,如上所示。我想加载的方式很糟糕但是......需要问比我更聪明的人。

最佳答案

来自快速入门指南:( http://json-schema.org/ )

The JSON document being validated or described we call the instance, and the document containing the description is called the schema.

The most basic schema is a blank JSON object, which constrains nothing, allows anything, and describes nothing:

{}

You can apply constraints on an instance by adding validation keywords to the schema. For example, the “type” keyword can be used to restrict an instance to an object, array, string, number, boolean, or null:

{ "type": "string" }

这意味着如果您的模式是空对象或不使用 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

可能您的 setup.json 加载不正确或者不是符合 JSON 架构规范的架构。

关于javascript - AJV 的验证器总是返回真值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54026332/

30 4 0