让我试着解释一下我想做什么。我的JSON看起来像这样
My.json:
{
"overrides": {
"key1": {
"DRM": {
"queue": "q1",
"resource": "r1m<0.5"
}
},
"key2": {
"DRM": {
"queue": "q2",
"resource": "r1m<0.4"
}
}
}
}
我的架构:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "test-schema.json",
"definitions": {
"DRM": {
"type": "object",
"properties": {
"queue": {
"type": "string"
},
"resource": {
"type": "string"
}
},
"additionalProperties": false
},
"key-objs": {
"type": "object",
"properties": {
"DRM": {
"$ref": "#/definitions/DRM"
}
},
"additionalProperties": false
}
},
"type": "object",
"properties": {
"overrides": {
"type": "object",
"properties": {
"key1": {
"$ref": "#/definitions/key-objs"
},
"key2": {
"$ref": "#/definitions/key-objs"
}
}
}
}
}
我的问题是,每当我在key
内定义新的overrides
时(例如: key3,key4 ),我需要更新我的架构,让它引用{ {1}}。
我知道key-objs
对象可以转换为列表,列表中的所有项都可以定义overrides
。但是,我不想将key-objs
更改为列表。
有没有办法让我说overrides
内的所有对象都应引用overrides
而不是专门指定它?
答案 0 :(得分:1)
您可以使用"additionalProperties": {schemaComesHere}
因此,您可以执行
,而不是逐个定义属性 "overrides": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/key-objs"
}
}