Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON模式是否允许同一元素使用不同的类型?_Json_Mongodb_Jsonschema - Fatal编程技术网

JSON模式是否允许同一元素使用不同的类型?

JSON模式是否允许同一元素使用不同的类型?,json,mongodb,jsonschema,Json,Mongodb,Jsonschema,我目前正在为MongoDB开发JSON模式提取器 例如,我有以下JSON文档(取自) {“姓名”:“汤姆”、“宠物”:[“猴子”、“鱼”]} {“名字”:“哈利”,“宠物”:“白鹭”} 正如您所看到的,宠物可以是数组和字符串。有一个JSON模式允许这两个文档吗?绝对可以。事实上,这有两种方式: #1)在中输入多个条目 架构中的“type”关键字可以是数组: { "type": ["string", "array"], "items": { "type": "str

我目前正在为MongoDB开发JSON模式提取器

例如,我有以下JSON文档(取自)

{“姓名”:“汤姆”、“宠物”:[“猴子”、“鱼”]}
{“名字”:“哈利”,“宠物”:“白鹭”}


正如您所看到的,宠物可以是数组和字符串。有一个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"
            }
        }
    ]
}