jsonschema未验证缺少的必需属性



我知道这个问题经常出现,在发布之前我已经尝试过研究这个问题,但仍然不知道我缺少了什么

我有一个带有嵌套对象的架构。我的模式要求company属性是一个对象。该对象上有必需的属性,但这些属性将被忽略。为什么它忽略了所需的属性?

架构:

{
'business_type': {
'type': 'string',
"enum": ['company', 'non_profit']
},
'email': {
'type': 'string'
},
'company': {
'type': 'object',
'properties': {
'address': {
'type': 'object',
'properties': {
'city': {
'type': 'string',
},
'country': {
'type': 'string',
'enum': ['US']
},
'line1': {
'type': 'string'
},
'line2': {
'type': 'string'
},
'postal_code': {
'type': 'string'
},
'state': {
'type': 'string'
}
},
'required': ['city', 'country', 'line1', 'postal_code', 'state'],
},
'name': {
'type': 'string'
},
'phone': {
'type': 'string'
}
},
'required': ['address', 'name', 'phone'],
},
'required' : ['business_type', 'email', 'company']
}

没有失败但应该失败的示例对象,因为它缺少电话属性

{
"business_type": "company",
"email": "email@email.com",
"company": {
"address": {
"city": "city",
"country": "US",
"line1": "line1",
"line2": "line2",
"postal_code": "00000",
"state": "AZ"
},
"name": "name"
}
}

如果缺少business_type、电子邮件或公司,则验证工作正常,因此它不会验证嵌套结构。

我假设我忽略了什么,我只是不知道它是什么,我忽略了

您需要将business_typeemailcompany封装在properties关键字中。否则,模式不会将它们视为属性,而只是模式中的额外数据。JSON模式将忽略它不知道的关键字。

您在company子模式中已将其更正。

相关内容

  • 没有找到相关文章

最新更新