Расширить свойства объекта $ref

#jsonschema #angular6-json-schema-form

#jsonschema #angular6-json-schema-form

Вопрос:

Я использую схему JSON для создания формы, и у меня есть объект в «определениях», на который я ссылаюсь с помощью $ref в двух разных местах схемы. В одном из экземпляров мне нужно добавить еще одно свойство к объекту, на который ссылается ссылка, как я могу этого добиться?

 {
    "definitions": {
        "settingsProperties": {
            "$id": "#/definitions/settingsProperties",
            "type": "object",
            "properties": {
                "thickness": {
                    "$id": "#/properties/defaultLayerSettings/thickness",
                    "type": "number",
                    "title": "Thickness:",
                }
            }
        }
    },
    "properties": {
        "layerSettings": {
            "$id": "#/properties/layerSettings",
            "type": "array",
            "title": "Dynamic Layer Settings:",
            "items": {
                "title": "Dynamic Settings",
                "type": "object",
                "$ref": "#/definitions/settingsProperties", PLUS startLayer PROPERTY!!!!!!!!!!!!!!
                "required": [
                    "startLayer"    
                ]
            }
        }
}
  

Ответ №1:

Просто добавьте "properties": { "startLayer": { ... } } под required ключевым словом.

Обратите внимание, что если вы используете какую-либо версию спецификации, более раннюю, чем черновик 2019-09 (текущая последняя версия), вам придется вложить $ref ключевое слово в allOf . Кроме того, использование фрагментов (строк, которые включают # ) не разрешено в $id ключевом слове, хотя некоторые устаревшие инструменты генерируют схемы с этой структурой.