相互排斥的属性组合

时间:2018-06-15 19:40:49

标签: jsonschema

使用Jsonschema草案6,我正在尝试创建符合以下内容的架构:

  1. 属性A,B1,B2和B3是数字或null
  2. 如果属性A存在且非null,则属性B,C和D必须不存在或为null
  3. 如果属性B1,B2和B3中的任何一个存在且非空,则属性A必须为空或不存在。
  4. A,B1,B2和B3都可以不存在
  5. 符合文件的例子:

    {}
    
    {"A": 1}
    
    {"A": 1, "B2": null}
    
    {"B1": 1}
    
    {"B1": 1, "B2": 1, "B3": 1}
    
    {"A": null, "B1": 1, "B2": 1, "B3": 1}
    

    不合格文件的例子:

    {"A": 1, "B1": 2}
    
    {"A": 1, "B1": null, "B2": 1}
    

    我看到一些相关的问题有帮助,但没有完全回答这个问题:

    这是我当前的架构,它只强制执行约束#1和#4:

    {
      "$schema": "http://json-schema.org/draft-06/schema#",
      "properties": {
        "A": {"oneOf": [{"type": "null"}, {"type": "number"}],
        "B1": {"oneOf": [{"type": "null"}, {"type": "number"}],
        "B2": {"oneOf": [{"type": "null"}, {"type": "number"}],
        "B3": {"oneOf": [{"type": "null"}, {"type": "number"}]
      }
    }
    

    这里的正确方法是什么?我要求一些不合理的东西吗?

1 个答案:

答案 0 :(得分:0)

tomcat_users.xml