我目前正在为MongoDB开发一个JSON模式提取器。
例如,我有以下JSON文档(取自https://github.com/variety/)
{“name”:“Tom”,“pets”:[“monkey”,“fish”]}
{“name”:“Harry”,“pets”:“egret”}
如您所见,宠物可以是数组和字符串。是否有允许这两个文档的JSON模式?
答案 0 :(得分:3)
绝对。事实上,为此有两种方式:
#1)"type"
架构中的"type"
关键字可以是数组:
{
"type": ["string", "array"],
"items": {
"type": "string"
}
}
这里,数据可以是字符串或数组。因为"items"
关键字仅在数据是数组时使用,所以这表示数据可以是字符串或字符串数组。
#2)使用"oneOf"
以上适用于简单案例。但是,在“这可能是A或B”的一般情况下,您可以使用"oneOf"
:
{
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
}
这更详细 - 第一个选项很简单。但是,如果您的约束更复杂(例如“数据可以是布尔数组或数字数组”),则可以使用此选项。