我需要一个任意长度的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年草案中是新的。