如何设置JSON模式对象的限制';s值多少?

如何设置JSON模式对象的限制';s值多少?,json,python-3.x,jsonschema,json-schema-validator,python-jsonschema,Json,Python 3.x,Jsonschema,Json Schema Validator,Python Jsonschema,我想检查json文件中多个条目的特定值。我写了一个JsonSchema,但它没有显示正确的结果 例如: "student": [ { "main": false, "name": "Robert" }, {

我想检查json文件中多个条目的特定值。我写了一个JsonSchema,但它没有显示正确的结果

例如:

"student": [
                        {
                            "main": false, 
                            "name": "Robert"  
                        }, 
                        {
                            "main": true, 
                            "name": "Jannet"
                        },
                        {
                            "main": false, 
                            "name": "Julie"
                        }
                    ]
如果json文件的“main”只有一个true,那么它将被验证,其余的将为false。如果它有多个true,则不会进行验证。 我尝试了以下jsonSchema:

"student":{
                                "type":"array",
                                "items":{
                                    "type":"object",
                                    "required":["name","main"],
                                    "properties":{
                                        "name":{
                                            "type":"string"
                                        },
                                        "main":{
                                            "type":"boolean"
                                        }
                                    },
                                            "anyOf":[
                                        {
                                            "properties":{
                                                "main":
                                                {
                                                "enum":[true]

                                                }   
                                            }
                                        }
                                    ]
                                }
                            }

不幸的是,这在JSON模式中是不可能的

使用JSON模式实现这一点的唯一方法是,如果您还要求数组中
main:true
的项是第一项


如果您可以强制要求这样做,请在评论中告诉我,我将更新此答案以解释这将如何工作。

不幸的是,这在JSON模式中是不可能的

使用JSON模式实现这一点的唯一方法是,如果您还要求数组中
main:true
的项是第一项


如果您可以强制执行此操作,请在评论中告诉我,我将更新此答案,以解释如何执行此操作。

@Json我尝试了“main”:{“type”:“boolean”,“contains”:{“const”:true},“minContains”:1,“maxContains”:1}”但它不起作用。您可能没有使用支持2019-09草案的验证器。它相对较新。我在draft-07中使用了“validator=jsonschema.Draft7Validator(schema)”,因为您认为第一项是唯一可能是
main:true
,所以我将更新我的答案以反映这一点。@Json我尝试了“main”:{“type”:“boolean”,“contains”:{“const:true}”,minContains“:1,“maxContains”:1}”但它不起作用您可能没有使用支持2019-09草案的验证器。它相对较新。我使用了“validator=jsonschema.Draft7Validator(schema)“对于草稿-07,您可以认为第一项是唯一可能是
main:true
,因此我将更新我的答案以反映这一点。