验证JSON-SCHEMA中的多个重复对象



我想用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"
]
}

相关内容

  • 没有找到相关文章

最新更新