如何在json模式中添加所需的子数组?



我正在创建一个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": {
...
}
}

相关内容

  • 没有找到相关文章

最新更新