如何设置JSON模式对象的限制';s值多少?
我想检查json文件中多个条目的特定值。我写了一个JsonSchema,但它没有显示正确的结果 例如:如何设置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" }, {
"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
,因此我将更新我的答案以反映这一点。