使用 tv4 的可选 Json 验证 - Javascript
Optional Json validation using tv4 - Javascript
我正在尝试使用 tv4
验证我的 JSON 架构。
它正在工作和验证 returns True
.
但是,在我的例子中,JSON 集合 "first, second, and third"
不会一直可用。
在这种情况下如何编写模式?
我的JSON数据
{
"checked": "OK",
"result": {
"first": {
"label": "First Label",
"value": 1
},
"second": {
"label": "second Label",
"value": 34
},
"third": {
"label": "Third Label",
"value": 28
}
}
}
JSON 架构
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "http://example.com/example.json",
"type": "object",
"title": "The root schema",
"description": "The root schema comprises the entire JSON document.",
"default": {},
"required": [
"checked",
"result"
],
"properties": {
"checked": {
"$id": "#/properties/checked",
"type": "string",
"title": "The checked schema",
"description": "An explanation about the purpose of this instance.",
"default": "",
"examples": [
"OK"
]
},
"result": {
"$id": "#/properties/result",
"type": "object",
"title": "The result schema",
"description": "An explanation about the purpose of this instance.",
"default": {},
"required": [
"first",
"second",
"third"
],
"properties": {
"first": {
"$id": "#/properties/result/properties/first",
"type": "object",
"title": "The first schema",
"description": "An explanation about the purpose of this instance.",
"default": {},
"examples": [
{
"label": "First Label",
"value": 1
}
],
"required": [
"label",
"value"
],
"properties": {
"label": {
"$id": "#/properties/result/properties/first/properties/label",
"type": "string",
"title": "The label schema",
"description": "An explanation about the purpose of this instance.",
"default": "",
"examples": [
"First Label"
]
},
"value": {
"$id": "#/properties/result/properties/first/properties/value",
"type": "integer",
"title": "The value schema",
"description": "An explanation about the purpose of this instance.",
"default": 0,
"examples": [
1
]
}
},
"additionalProperties": true
},
"second": {
"$id": "#/properties/result/properties/second",
"type": "object",
"title": "The second schema",
"description": "An explanation about the purpose of this instance.",
"default": {},
"examples": [
{
"label": "second Label",
"value": 34
}
],
"required": [
"label",
"value"
],
"properties": {
"label": {
"$id": "#/properties/result/properties/second/properties/label",
"type": "string",
"title": "The label schema",
"description": "An explanation about the purpose of this instance.",
"default": "",
"examples": [
"second Label"
]
},
"value": {
"$id": "#/properties/result/properties/second/properties/value",
"type": "integer",
"title": "The value schema",
"description": "An explanation about the purpose of this instance.",
"default": 0,
"examples": [
34
]
}
},
"additionalProperties": true
},
"third": {
"$id": "#/properties/result/properties/third",
"type": "object",
"title": "The third schema",
"description": "An explanation about the purpose of this instance.",
"default": {},
"examples": [
{
"label": "Third Label",
"value": 28
}
],
"required": [
"label",
"value"
],
"properties": {
"label": {
"$id": "#/properties/result/properties/third/properties/label",
"type": "string",
"title": "The label schema",
"description": "An explanation about the purpose of this instance.",
"default": "",
"examples": [
"Third Label"
]
},
"value": {
"$id": "#/properties/result/properties/third/properties/value",
"type": "integer",
"title": "The value schema",
"description": "An explanation about the purpose of this instance.",
"default": 0,
"examples": [
28
]
}
}
}
}
}
}
}
在JSON Schema 中,默认情况下所有属性都是可选的。您的模式根据需要显式声明这些属性。要使它们可选,请删除该关键字:"required": ["first", "second", "third"]
我正在尝试使用 tv4
验证我的 JSON 架构。
它正在工作和验证 returns True
.
但是,在我的例子中,JSON 集合 "first, second, and third"
不会一直可用。
在这种情况下如何编写模式?
我的JSON数据
{
"checked": "OK",
"result": {
"first": {
"label": "First Label",
"value": 1
},
"second": {
"label": "second Label",
"value": 34
},
"third": {
"label": "Third Label",
"value": 28
}
}
}
JSON 架构
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "http://example.com/example.json",
"type": "object",
"title": "The root schema",
"description": "The root schema comprises the entire JSON document.",
"default": {},
"required": [
"checked",
"result"
],
"properties": {
"checked": {
"$id": "#/properties/checked",
"type": "string",
"title": "The checked schema",
"description": "An explanation about the purpose of this instance.",
"default": "",
"examples": [
"OK"
]
},
"result": {
"$id": "#/properties/result",
"type": "object",
"title": "The result schema",
"description": "An explanation about the purpose of this instance.",
"default": {},
"required": [
"first",
"second",
"third"
],
"properties": {
"first": {
"$id": "#/properties/result/properties/first",
"type": "object",
"title": "The first schema",
"description": "An explanation about the purpose of this instance.",
"default": {},
"examples": [
{
"label": "First Label",
"value": 1
}
],
"required": [
"label",
"value"
],
"properties": {
"label": {
"$id": "#/properties/result/properties/first/properties/label",
"type": "string",
"title": "The label schema",
"description": "An explanation about the purpose of this instance.",
"default": "",
"examples": [
"First Label"
]
},
"value": {
"$id": "#/properties/result/properties/first/properties/value",
"type": "integer",
"title": "The value schema",
"description": "An explanation about the purpose of this instance.",
"default": 0,
"examples": [
1
]
}
},
"additionalProperties": true
},
"second": {
"$id": "#/properties/result/properties/second",
"type": "object",
"title": "The second schema",
"description": "An explanation about the purpose of this instance.",
"default": {},
"examples": [
{
"label": "second Label",
"value": 34
}
],
"required": [
"label",
"value"
],
"properties": {
"label": {
"$id": "#/properties/result/properties/second/properties/label",
"type": "string",
"title": "The label schema",
"description": "An explanation about the purpose of this instance.",
"default": "",
"examples": [
"second Label"
]
},
"value": {
"$id": "#/properties/result/properties/second/properties/value",
"type": "integer",
"title": "The value schema",
"description": "An explanation about the purpose of this instance.",
"default": 0,
"examples": [
34
]
}
},
"additionalProperties": true
},
"third": {
"$id": "#/properties/result/properties/third",
"type": "object",
"title": "The third schema",
"description": "An explanation about the purpose of this instance.",
"default": {},
"examples": [
{
"label": "Third Label",
"value": 28
}
],
"required": [
"label",
"value"
],
"properties": {
"label": {
"$id": "#/properties/result/properties/third/properties/label",
"type": "string",
"title": "The label schema",
"description": "An explanation about the purpose of this instance.",
"default": "",
"examples": [
"Third Label"
]
},
"value": {
"$id": "#/properties/result/properties/third/properties/value",
"type": "integer",
"title": "The value schema",
"description": "An explanation about the purpose of this instance.",
"default": 0,
"examples": [
28
]
}
}
}
}
}
}
}
在JSON Schema 中,默认情况下所有属性都是可选的。您的模式根据需要显式声明这些属性。要使它们可选,请删除该关键字:"required": ["first", "second", "third"]