簡體   English   中英

“additionalProperties”可以應用於 JSON Schema 中的嵌套對象嗎?

[英]Can “additionalProperties” apply to nested objects in JSON Schema?

我正在開發一個接受以下 JSON 的應用程序:

{
  "gd": { "enabled": true, "show_counts": true },
  "ra": { "enabled": true }
}

我開發了一個 JSON 模式來驗證這個輸入,允許一些鍵是可選的,其他鍵是必需的,以及一些最少數量的屬性。 它運作良好,看起來像這樣:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "gd": {
      "type": "object",
      "required": [ "enabled" ],
      "additionalProperties": false,
      "properties": {
        "enabled": { "type": "boolean" },
        "show_counts": { "type": "boolean" }
      }
    },
    "ra": {
      "type": "object",
      "required": [ "enabled" ],
      "additionalProperties": false,
      "properties": {
        "enabled": { "type": "boolean" }
      }
    }
  },
  "minProperties": 1
}

讓我煩惱的一件事是每個 object 都冗余地指定了"additionalProperties": false 我想在頂層指定一次,JSON 文檔中的任何地方都不應允許架構中未指定的任何屬性。

那可能嗎?

在最新的草案 (2019-09) 中,您可以通過定義所有模式派生自的“基本模式”來做到這一點:

{
  $defs: {
    base_object: {
      unevaluatedProperties: false
    },
  },
  $ref: '#/$defs/base_object',
  type: 'object',
  // additionalProperties: false does not need to be stated here
  ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM