JSON模式是否允许同一元素使用不同的类型?
我目前正在为MongoDB开发JSON模式提取器 例如,我有以下JSON文档(取自) {“姓名”:“汤姆”、“宠物”:[“猴子”、“鱼”]}JSON模式是否允许同一元素使用不同的类型?,json,mongodb,jsonschema,Json,Mongodb,Jsonschema,我目前正在为MongoDB开发JSON模式提取器 例如,我有以下JSON文档(取自) {“姓名”:“汤姆”、“宠物”:[“猴子”、“鱼”]} {“名字”:“哈利”,“宠物”:“白鹭”} 正如您所看到的,宠物可以是数组和字符串。有一个JSON模式允许这两个文档吗?绝对可以。事实上,这有两种方式: #1)在中输入多个条目 架构中的“type”关键字可以是数组: { "type": ["string", "array"], "items": { "type": "str
{“名字”:“哈利”,“宠物”:“白鹭”}
正如您所看到的,宠物可以是数组和字符串。有一个JSON模式允许这两个文档吗?绝对可以。事实上,这有两种方式: #1)在
中输入多个条目
架构中的“type”
关键字可以是数组:
{
"type": ["string", "array"],
"items": {
"type": "string"
}
}
在这里,数据可以是字符串或数组。由于“items”
关键字仅在数据为数组时使用,因此表示数据可以是字符串或字符串数组
#2)使用“其中一个”
上述方法适用于简单的情况。但是,在“这可能是A或B”的一般情况下,您可以使用“其中一个”
:
这是更详细的-第一个选项是好的和简单的。但是,如果约束更复杂(例如,“数据可以是布尔数组,也可以是数字数组”),则可以使用此选项。是否可以强制或迁移数据,使其始终为数组,即使为空或一个元素?此外,根据您提供的链接,模式声明为:{“\u id”:{“key”:“pets”},“value”:{“types”:[“String”,“Array”]},
,这将涵盖这两种情况。
{
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
}