#jsonschema #json-schema-validator #ajv
#jsonschema #json-schema-validator #ajv
Вопрос:
данные:
{
"dynamic_key_1": {
"key1": "value1"
"id": "dynamic_key_1"
},
"dynamic_key_2": {
"key1": "value2"
"id": "some_random"
}
}
схема:
{
"patternProperties": {
"^[^{}"/\\] $": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
// ... validate with key
}
}
}
}
}
Как проверить id
значение, равное ему key
, используя схему json.
В приведенном выше случае dynamic_key_1
тест пройдет и dynamic_key_2
не пройдет тест.
Ответ №1:
Это невозможно сделать в схеме JSON, если вы заранее не знаете все возможные значения. Вы не можете динамически использовать данные из экземпляра в качестве своего рода шаблона в схеме.
Ответ №2:
Я нашел способ сделать это. patternNames
Для проверки используется регулярное выражение.
...
"propertyNames": {
"pattern": "[A-Za-z][A-Za-z0-9_-]*$"
},
"patternProperties": {
"^[^{}"/\\] $": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
// ... validate with key
}
}
}
}
...