json架构不允许多个相同的节点

时间:2017-03-22 15:16:30

标签: json validation jsonschema

在我的应用程序中,我必须测试发回给我们的json验证一个确切的格式 - 在我的情况下,有一个Body和一个Head Block,但不是更多。我根据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"]
}

此块应验证错误! --- v

{
   "Body" : {
   },
   "Head" : {
   },
   "Head" : {
   }
}

此块应验证正确! --- v

{
   "Body" : {
   },
   "Head" : {
   }
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

此块无效...

{
   "Body" : {
   },
   "Head" : {
   },
   "Head" : {
   }
}

您可以通过http://jsonlint.com/

等验证程序运行它

如果您使用的任何验证器都说它有效,那么验证器就会出现问题。