Я пытаюсь определить ссылочную схему для использования в качестве типа карты 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 также было бы решением. Это выполнимо?