Ich mache JSON Validierung mit AJV. Ich muss Array von Zeichenfolgen validieren. Ich weiß, welche Elemente dort platziert werden können, also treffe ich "enum". Aber in einigen Fällen kann enum leer sein und das Array kann auch leer sein. Hier ist einfacher Test:Wie validiere leere Array von Strings mit AJV?
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);
Als Ergebnis erhalte ich:
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
Ich kann jede fiktive Zeichenfolge hinzufügen Array ENUM aber ist es möglich, diesen Fall in rechtlicher Weise zu validieren? Die Einschränkung 'minItems = 0' hilft nicht.
Ist es wirklich Json Schema Draft Einschränkung, dass ich leere Enum nicht verwenden kann?
UPD: Ich erwarte, dass Code im allgemeinen Fall überprüfen:
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
Ich erwarte, dass Code in Sonderfall zu überprüfen:
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.
ich nicht klar bin, was Sie erreichen wollen. Können Sie Ihrer Frage einige Beispiele von JSON hinzufügen, die Sie validieren möchten, und einige Beispiele, bei denen Sie erwarten, dass die Validierung fehlschlägt. Ich bin mir sicher, dass ich helfen kann, wenn ich das Problem besser verstehen kann. – Jason
UPD mit meinen Erwartungen hinzugefügt. – NtsDK