我正在尝试定义一个引用的架构,以用作具有文本字段的Cassandra CQL映射类型。具体来说,我想将URI映射到字符串。
现在我有:
"scope": {
"type": "object",
"properties": {
"uri": {
"type": "string",
"format": "uri"
},
"permission": {
"type": "string",
"enum": ["read_only", "read_write", "write_only"]
}
},
"required": ["uri", "permission"],
"additionalProperties": false
}
这对于像这样的数据很有用
{"uri":"http://example.com",
"permission": "read_only"}
但是我想要一个数据的架构
{"http://example.com": "read_only"}
http://spacetelescope.github.io/understanding-json-schema/reference/object.html有一个解决方案:
{
"type": "object",
"patternProperties": {
"^S_": { "type": "string" },
"^I_": { "type": "integer" }
}
}
问题是我必须使用正则表达式定义内置格式。查看URI的正则表达式示例可以使我避免这种情况。
由于我拥有的URI数量有限,因此将enum映射到enum也是一种解决方案。那可行吗?
如果可以允许我回答自己的问题,我相信解决方案是对密钥使用PatternProperties定义,并使用非常特定的正则表达式。该值可以是json-schema支持的任何类型,包括另一个正则表达式。就我而言,这是一个枚举。
因此,定义看起来像-
"patternProperties": {
"^https:\/\/www.example.com\/auth\/\\w+$": {
"type": "string",
"enum": ["read_only", "read_write", "write_only"]
}
},
"additionalProperties": false
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句