#jsonschema
#jsonschema
Вопрос:
Я создал следующую схему json.
{
"type": "object",
"properties": {
"hoge": {
"type": "object",
"properties": {
"code": {
"type": "string"
}
},
"additionalProperties": false
},
"foo": {
"type": "object",
"properties": {
"value": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
Когда тип — object , я хочу установить additionalproperties = false .
Но это очень избыточно.
Я определил следующие определения, чтобы избежать дублирования дополнительных свойств, но это сработало не так, как ожидалось.
{
"definitions": {
"baseObject": {
"type": "object",
"additionalProperties": false
}
},
"allOf": [{ "$ref": "#/definitions/baseObject"}],
"properties": {
"hoge": {
"allOf": [{ "$ref": "#/definitions/baseObject"}],
"properties": {
"code": {
"type": "string"
}
}
},
"foo": {
"allOf": [{ "$ref": "#/definitions/baseObject"}],
"properties": {
"value": {
"type": "number"
}
}
}
}
}
Есть ли какой-либо способ применить additionalproperties: false к типу object ??
Комментарии:
1. вы используете JavaScript или Jquery или в контексте witch вам нужно добавить это свойство ко всем объектам?
Ответ №1:
В проекте схемы JSON 2019-09 и выше вы должны использовать unevaluatedProperties
as, а additionalProperties
не в вашей удаленной схеме примера.
additionalProperties
не удается «видеть сквозь» ключевые слова аппликатора, такие как $ref
или allOf
. Это немного сложнее, но это самый простой способ подумать об этом. additionalProperties
работает только на основе properties
и patternProperties
внутри одного и того же объекта схемы.