[英]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.