Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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_Validation_Jsonschema - Fatal编程技术网

json模式不允许多个相同的节点

json模式不允许多个相同的节点,json,validation,jsonschema,Json,Validation,Jsonschema,在我的应用程序中,我必须测试返回给我们的json是否验证了确切的格式——在我的例子中,有一个主体和一个头块,但不是更多。我针对2个json验证了给定的json模式,并且两者都是有效的-有没有办法不让多个“Head”或“Body”节点通过 { "$schema": "http://json-schema.org/draft-04/schema#", "title": "ValidResponse", "type": "object", "properties": {

在我的应用程序中,我必须测试返回给我们的json是否验证了确切的格式——在我的例子中,有一个主体和一个头块,但不是更多。我针对2个json验证了给定的json模式,并且两者都是有效的-有没有办法不让多个“Head”或“Body”节点通过

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "ValidResponse",
    "type": "object",
    "properties": {
        "Head": {
            "type": "object"
        },
        "Body": {
            "type": "object"
        }
    },
    "additionalProperties": false,
    "required":["Head", "Body"]
}
这个区块应该验证错误---五

这个区块应该是正确的---五


此块无效

{
   "Body" : {
   },
   "Head" : {
   },
   "Head" : {
   }
}
您可以通过验证程序运行它,例如


如果你使用的任何验证器都说它是有效的,那就是验证器有问题

问题是您的输入不是有效的JSON,因此在将输入传递给模式检查器之前,应该使用JSON解析器或linter来检查这些输入上的错误


不过,大多数JSON解析器都会默默地忽略重复的
Head
属性之一。在任何情况下,JSON模式检查器都不会知道存在包含重复属性的输入。

。。。虽然这个验证器的工作方式似乎相当“正式”Ok,但是没有办法让json模式检查json是否是正确的json格式。。。Json格式本身必须在检查schemaYes之前正确,您必须验证Json本身,当它仍然是文本时,使用linter或Json解析器进行这种验证(不知道是否有)。
{
   "Body" : {
   },
   "Head" : {
   }
}
{
   "Body" : {
   },
   "Head" : {
   },
   "Head" : {
   }
}