我正在创建一个json模式来定义必要的数据与数据类型。有一些数据需要设置到required
文件。但是在它的文档中没有找到怎么做。
对于json模式:
{
"type": "object",
"required": [
"version",
"categories"
],
"properties": {
"version": {
"type": "string",
"minLength": 1,
"maxLength": 1
},
"categories": {
"type": "array",
"items": [
{
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
}
}
]
}
}
}
json像
{
"version":"1",
"categories":[
{
"title":"First",
"body":"Good"
},
{
"title":"Second",
"body":"Bad"
}
]
}
我想设置title
也是必需的。它在子数组中。如何设置它在json模式?
您的模式有一些问题。我假设你使用的是JSON Schema草案2019-09。
首先,您希望items
是一个对象,而不是一个数组,因为您希望它应用于数组中的每个项。
如果"items"是一个模式,如果
数组中的所有元素根据该模式成功验证,则验证成功。如果"items"是一个模式数组,如果实例的每个
元素在相同的
位置(如果有的话)对模式进行验证,则验证成功。
https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-02 section-9.3.1.1
第二,如果items
的值应该是一个模式,则需要将其视为一个模式。
如果我们从items
数组中取出项目作为模式,它实际上不做任何事情,您需要将其嵌套在properties
关键字中…
{
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
}
}
}
最后,现在您的items
关键字值是一个模式(子模式),您可以添加任何您通常使用的关键字,例如required
,就像您之前所做的一样。
{
"required": [
"title"
],
"properties": {
...
}
}