Я пишу некоторые JSON-схемы, которые имеют некоторые объекты с общими свойствами.
в JSON-схеме 1:
...
"properties": {
"someProperty": {
"type": "object",
"required": [
"propertyA",
"propertyB",
"propertyC",
],
"additionalProperties": false,
"properties": {
"propertyA": {
"type": "integer"
},
"propertyB": {
"type": "integer"
},
"propertyC": {
"type": "integer"
}
}
}
}
...
в JSON-схеме 2:
...
"properties": {
"someProperty": {
"type": "object",
"required": [
"propertyD",
"propertyB",
"propertyC",
],
"additionalProperties": false,
"properties": {
"propertyD": {
"type": "integer"
},
"propertyB": {
"type": "integer"
},
"propertyC": {
"type": "integer"
}
}
}
}
...
Таким образом, единственное различие между этими двумя объектами (someProperty
) состоит в propertyA
против propertyD
.
Поэтому я решил создать общую схему JSON, которая будет содержать определение для этих двух общихproperties, propertyB
и propertyC
.
Одним из решений было определение объекта в общей схеме, который бы содержал эти два свойства, но я хотел, чтобы мой JSON имел эти три свойства одновременноуровень (плоский, развернутый), а не вот так:
"someProperty": {
"propertyA": 2,
"sharedObject": {
"propertyB": 3,
"propertyC": 4
}
}
Возможно ли то, что я хочу?Я хочу закончить тем, что мой JSON будет действительным, например:
"someProperty": {
"propertyA": 2,
"propertyB": 3,
"propertyC": 4
}
и:
"someProperty": {
"propertyD": 2,
"propertyB": 3,
"propertyC": 4
}
Со всеми этими свойствами как required
и нет additionalProperties
разрешено.