Это сработало для меня, используя регулярное выражение: "pattern": "^ ((?! status-range).) * $" В свойстве name настройки.Это исключает строку «диапазоны состояний из разрешенных имен. В этом случае« специализированная »настройка имеет постоянное имя« диапазоны состояния », как показано ниже:
"settingData" : {
"$id": "#settingData",
"oneOf" : [
{ "type" : "number" },
{ "type" : "array", "items" : { "oneOf" : [ { "type" : "number"},{ "type" : "null" } ] } },
{ "type" : "array", "items" : { "$ref" : "#setting" } }
]
},
"setting" : {
"$id": "#setting",
"type" : "object",
"properties" : {
"name": {
"type": "string",
"pattern": "^((?!status-ranges).)*$",
"title": "type of setting",
"examples": [
"led-brightness"
]
},
"data": {
"$ref" : "#settingData"
}
},
"required" : ["type","data"]
},
"statusRange" : {
"$id": "#statusRange",
"type" : "object",
"properties" : {
"name": {
"const": "status-ranges"
},
"data": {
"$ref" : "#settingData"
}
},
"required" : ["type","data"]
},
Я все еще хотел бы выяснить, как это сделать"not "работает в JSON Schema, хотя.