如何将 additionalproperties: false 应用于所有对象?

How to apply additionalproperties: false to all object?

我创建了以下 json 架构。

{
  "type": "object",
  "properties": {
    "hoge": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "foo": {
      "type": "object",
      "properties": {
        "value": {
          "type": "number"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}

当type为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"
        }
      }
    }
  }
}

有什么方法可以应用附加属性:false 来键入对象吗??

对于 JSON 架构草案 2019-09 及更高版本,您应该在去重复的示例架构中使用 unevaluatedProperties 而不是 additionalProperties

additionalProperties 无法“看穿”$refallOf 等涂抹器关键字。它比那复杂一点,但这是最简单的思考方式。 additionalProperties 仅在同一架构对象中基于 propertiespatternProperties 工作。