如何解决如何在json模式中向子数组添加required?
我正在创建一个 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://tools.ietf.org/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": {
...
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。