Свойство объекта схемы Json должно быть ключом объекта

#json #jsonschema

#json #jsonschema

Вопрос:

В настоящее время я пишу схему json, и мне было интересно, знает ли кто-нибудь ответ на мою проблему. Могу ли я гарантировать, что значение объекта равно ключу объекта где-нибудь в JSON. Учитывая следующий JSON:

 {
    "defaultConfig" : "config1",
    "configs" : {
        "config0" : {...},
        "config1" : {...},
        "config2" : {...}
    }
}
  

Могу ли я подтвердить, что содержимое «defaultConfig» должно быть одним из ключей свойств «конфигураций» (например, «config0», «config1», «config2»)? В этом случае я не могу использовать перечисления, поскольку имена конфигураций заранее неизвестны?

Редактировать: вот схема, которая у меня есть до сих пор:

 {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties" : {
        "defaultConfig" : {
            "type" : "string"
        },
        "configs" : {
            "type" : "object", 
            "patternProperties": {
                "." : {"type" : "object"}
            }
        }
    }
 }
  

Комментарии:

1. Я думаю, вы не можете, поскольку схема json используется для проверки json, а не самой схемы.

Ответ №1:

Нет, в схеме JSON нет ничего, что позволяло бы ключевому слову таким образом ссылаться на другую часть экземпляра данных.

Однако последняя версия спецификации допускает расширения с помощью ключевого слова $vocabulary , поэтому, если вы так склонны, вы можете написать свое собственное ключевое слово, которое сделало то, что вам нужно.