经过一番研究,看起来JSON Schema v5的功能已经通过$data reference
属性。
以下是JavaScript的架构验证,ajv: https://www.npmjs.com/package/ajv#data-reference
$数据参考
有了可以使用从经验证的数据作为模式的关键字值的值V5选。有关更多信息,请参阅v5提案。
$数据参考中的关键字被支撑:常数,枚举格式,最大/最小,exclusiveMaximum/exclusiveMinimum,最大长度/的minLength,maxItems/minItems,maxProperties/minProperties,formatMaximum/formatMinimum,formatExclusiveMaximum/formatExclusiveMinimum,multipleOf ,pattern,required,uniqueItems。
“$ data”的值应该是一个相对的JSON指针。
例子。
该模式要求在属性值越小小于或大于在该属性的值等于较大:
var schema = {
"properties": {
"smaller": {
"type": number,
"maximum": { "$data": "1/larger" }
},
"larger": { "type": number }
}
};
var validData = {
smaller: 5,
larger: 7
};
该模式要求的属性具有相同的格式,其字段名:
var schema = {
"additionalProperties": {
"type": "string",
"format": { "$data": "0#" }
}
};
var validData = {
'date-time': '1963-06-19T08:30:06.283185Z',
email: '[email protected]'
}
$数据引用已被安全地解析 - 即使某些属性未定义,它也不会抛出。如果$ data解析为未定义,则验证成功(不包含常量关键字)。如果$ data解析为不正确的类型(例如最大关键字不是“number”),则验证失败。