在一个我正在使用的解决方案中,最终用户将在此处创建自己的数据模型和方案以验证数据。由于Json模式元模式非常宽松,因此我想制作一个更严格的元数据模式来验证最终用户的模式。因此,最终用户将无法在数字类型上设置maxLength。
我查看了文档和规范,但无法正常工作。我不知道我是否应该使用AdditionalProperties或patternProperties 或只是属性本身上的一个简单[]。
{
"$schema": "http://Myschema.nl/draft-01/schema#",
"$id": "http://Myschema.nl/draft-01/schema#",
"title": "Core schema meta-schema",
"definitions": {
"numberproperty" : {
"type" : "number",
"properties" : { "minimum": { "type": "number"} },
"required" : ["minimum"]
},
"schemaArray": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#"
}
},
"nonNegativeInteger": {
"type": "integer",
"minimum": 0
},
"nonNegativeIntegerDefault0": {
"allOf": [
{
"$ref": "#/definitions/nonNegativeInteger"
},
{
"default": 0
}
]
},
"simpleTypes": {
"enum": [
"array",
"boolean",
"integer",
"null",
"number",
"object",
"string"
]
},
"stringArray": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"default": []
}
},
"required" : ["$id"],
"properties": {
"properties": {
"oneOf" : [
{"$ref": "#/definitions/numberproperty"}
]
}
},
"default": true
}
但是这将失败,因为要验证的架构中定义的属性是一个对象...所以我需要在两者之间还有一层...我想
{
"$id": "http://Myschema.nl/draft-01/schema",
"$schema": "http://Myschema.nl/draft-01/schema#",
"title": "EndUserSchemaDefinition",
"type": "number",
"properties": {
"myNewNumberProperty": {
"type": "number",
"maximum": 2,
"minimum": 2
}
}
}
所以失败了,因为它是一个对象而不是数字类型...