JSON模式:数组的第一项



我需要一个任意长度的JSON数组。数组中的每一项都是一个JSON对象,它们都有相同的键和类型。

但是模式应该有一个例外:第一个对象不需要所有的键,所以模式所需的列表应该比第一个项更短。

我尝试使用"item "one_answers";prefixItems"没有运气。似乎"前缀项"&;与"items"一起使用时,将独立于草稿版本而被忽略。因为数组可以是任意长度,我想我不能使用多个模式与"item "

{
"description": "Schema for array data",
"$schema": "http://json-schema.org/draft-2020-12/schema#",
"version": "0-0-6",
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"prefixItems": [{
"type": "object",
"required": [
"name"
],
"properties": {
"name" : { "type" :"string" },
"age" : { "type" : "number" },
"city" : { "type" : "string" }  
}
}],
"items": 
{
"type": "object",
"required": [
"name", "age", "city"

],
"properties": {
"name" : { "type" :"string" },
"age" : { "type" : "number" },
"city" : { "type" : "string" } 
}
}
}
}
}

我的数据:

{
"data" : [
{
"name": "Tom"
},
{
"name": "Ben",
"age": 32,
"city": "Berlin"
},
{       
"name": "Mike", 
"age": 40,
"city": "Boston"
} 
]
}

验证我使用:

https://www.jsonschemavalidator.net/

https://jsonlint.com/

验证我的例子给出了错误的第一项:object: age, city.">

additionalItems代替items

模式:

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "array",
"prefixItems": [
{ "type": "number" },
{ "type": "string" },
{ "enum": ["Street", "Avenue", "Boulevard"] },
{ "enum": ["NW", "NE", "SW", "SE"] }
],
"additionalItems": {
"type": "number"
}

}

验证数据:

[
1600,
"Pennsylvania",
"Avenue",
"NW",
1]

你遇到的问题是验证器只支持标准的草案7,并且使用items的方式我们都想在2019年草案中是新的。

相关内容

  • 没有找到相关文章

最新更新