【问题标题】:How to apply additionalproperties: false to all object?如何将附加属性:false 应用于所有对象?
【发布时间】:2021-03-05 08:39:07
【问题描述】:

我创建了以下 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 来键入对象??

【问题讨论】:

  • 您正在使用 JavaScript oder Jquery 或在女巫上下文中您需要将此属性添加到所有对象?

标签: jsonschema


【解决方案1】:

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

additionalProperties 不能“透视”应用程序关键字,例如 $refallOf。它比这更复杂一些,但这是考虑它的最简单方法。 additionalProperties 仅在同一架构对象中基于 propertiespatternProperties 工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    相关资源
    最近更新 更多