我用ajv进行json验证。我需要验证字符串数组。我知道哪些元素可以放在那里,所以我做了适当的“枚举”。但在某些情况下,枚举可以为空,数组也可以为空。这是一个简单的测试:
var schema = {
"type":"array",
"items" : {
"type" : "string",
"enum" : []
}
}
var data = [];
var Ajv = require('./ajv-4.1.1.js');
var ajv = Ajv({
allErrors : true
});
var validate = ajv.compile(schema);
var valid = validate(data);
if (!valid)
console.log(validate.errors);
结果我得到:
Error: schema is invalid:data.items.enum should NOT have less than 1 items, data.items should be array, data.items should match some schema in anyOf
我可以将任何虚构的字符串添加到枚举数组中,但是是否可以以合法的方式验证这种情况?添加 'minItems=0' 限制没有帮助。
我不能使用空枚举真的是json模式草案限制吗?
UPD:我希望在一般情况下验证代码:
var array = Object.keys(someObj); // array: ["foo", "bar"]
var schema = {
"type":"array",
"items" : {
"type" : "string",
"enum" : array
}
}
var data = ["foo"]; // valid
var data = ["bar"]; // valid
var data = ["bar","foo"]; // valid
我希望在特殊情况下验证代码:
var array = Object.keys(someObj); // array: []
var schema = {
"type":"array",
"items" : {
"type" : "string",
"enum" : array
}
}
var data = []; // I expect to see it valid too but get error instead.