我有一个json对象,其中可以包含任意数量的具有特定规格的嵌套对象,例如:
{
"Bob": {
"age": "42",
"gender": "male"
},
"Alice": {
"age": "37",
"gender": "female"
}
}
并希望有一个类似于以下内容的架构:
{
"type": "object",
"propertySchema": {
"type": "object",
"required": [
"age",
"gender"
],
"properties": {
"age": {
"type": "string"
},
"gender": {
"type": "string"
}
}
}
}
我知道我可以将其转换为数组并在对象内部推送“名称”。在这种情况下,我的架构将如下所示:
{
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"age",
"gender"
],
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "string"
},
"gender": {
"type": "string"
}
}
}
}
但我想有一个类似字典的结构。是否可以制作这样的架构?
最佳答案
AdditionalProperties是您的关键字:
{
"type" : "object",
"additionalProperties" : {
"type" : "object",
"required" : [
"age",
"gender"
],
"properties" : {
"age" : {
"type" : "string"
},
"gender" : {
"type" : "string"
}
}
}
}
additionalProperties
可以具有以下含义不同的值:"additionalProperties": false
根本不允许使用更多属性。 "additionalProperties": true
允许任何其他属性。这是默认行为。 "additionalProperties": {"type": "string"}
如果具有给定类型的值(此处为“字符串”),则允许使用(任意名称)附加属性。 "additionalProperties": {*any schema*}
附加属性必须满足提供的架构,例如上面提供的示例。