我有一个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"
}
}
}
}
但我希望有一个类似字典的结构。是否可以制作这样的架构?
答案 0 :(得分:30)
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*}
其他属性必须满足提供的架构,例如上面提供的示例。