我想用json-schema验证一个json对象,但是这个json对象可以根据用户的需要重复它的值。
该对象的键可以在用户创建json时按照用户的意愿重复多次。
示例1:(collection with object)
{
"info":
[
{
"name": "aaron",
"email": "aaron.com"
}
]
}
示例1的JSON-SCHEMA
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string"
}
},
"required": [
"name",
"email"
]
}
示例2:(collection with 2 object)
{
"info":
[
{
"name": "aaron",
"email": "aaron.com"
},
{
"name": "misa",
"email": "misa.com"
}
]
}
示例2的JSON SCHEMA
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"info": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string"
}
},
"required": [
"name",
"email"
]
},
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string"
}
},
"required": [
"name",
"email"
]
}
]
}
},
"required": [
"info"
]
}
简而言之,我正在寻找的是一个动态json模式,无论集合增长多少次,它只能使用1,而不是生成几个。
由于你们使用的是draft-04,我将引用draft-04的规范。
这意味着您希望items
具有对象值,而不是对象数组。
item "必须是对象或数组。如果
是一个对象,这个对象必须是一个有效的JSON Schema。如果它是一个
数组,这个数组的项必须是对象,并且这些对象中的每一个必须是一个有效的JSON Schema草案-04规范https://datatracker.ietf.org/doc/html/draft-fge-json-schema-validation-00#section-5.3.1
在JSON Schema 2020-12中,items
可能只是一个对象值,你必须为元组使用不同的关键字,如validation。
这对我有用-
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"info": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string"
}
},
"required": [
"name",
"email"
]
}
]
"additionalItems":{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string"
}
},
"required": [
"name",
"email"
]
}
}
},
"required": [
"info"
]
}