有条件地排除一个同级对象属性取决于JSON架构中其他同级对象的属性

问题描述 投票:0回答:1

我有一个具有两个同级JSON对象的JSON,我希望有一个满足以下条件的架构:

如果类型== HARD_RULES或SOFT_RULES,则在进行模式验证时应将'referee'属性完全从object2中排除或删除,否则对object2是OTHERWISE'referee']

请注意,'referee'属性对于object2是强制性的。

{ 
  {
        //Object1
    'required': ['host'],
        'properties': {
            'type': {
                'enum': ['HARD_RULES', 'SOFT_RULES'],
                'type': 'string'
            },
            'host': {
                'type': 'string'
            }
        }
    }, {
    //Object2
        'required': ['referee'],
        'properties': {
            'type': {
                'enum': ['INDOOR'],
                'type': 'string'
            },
            'referee': {
                'type': 'string'
            }
        }
    }
}
json jsonschema json-schema-validator
1个回答
0
投票
假设您在这里使用draf-7。

您需要将两个子方案包装在oneOf数组中。

这意味着一个模式必须是有效的,不得超过一个,而不是一个。

您还需要为每个子模式添加additionalProperties: false

您几乎快要得到这个!

© www.soinside.com 2019 - 2024. All rights reserved.