JIV架构似乎失败了,不确定为什么会发生这种情况

天鹅绒方案

{
  "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Update app config Support & Ticketing",
      "type": "object",
        "properties": {
    "servicenowEnabled": {
      "type": "boolean"
    },
    "servicenowClientId": {
      "type": "string"
    },
    "servicenowClientSecret": {
      "type": "string"
    },
    "servicenowBaseUrl": {
      "type": "string",
        "format": "regex",
          "pattern": ".*service-now.com$"
    },
    "servicenowKnowledgeBaseEnabled": {
      "type": "boolean"
    },
    "servicenowKnowledgeBaseSelected": {
      "type": "object",
        "properties": {
        "showAll": {
          "type": "boolean"
        },
        "selectedList": {
          "type": "array",
            "items": {
            "type": "object"
          },
          "properties": {
            "id": {
              "type": "string",
                "minLength": 1
            },
            "name": {
              "type": "string",
                "minLength": 1
            }
          }
        }
      },
      "required": [
        "showAll"
      ],
        "if": {
        "properties": {
          "showAll": {
            "const": true
          }
        }
      },
      "then": {
        "properties": {
          "selectedList": {
            "const": []
          }
        }
      },
      "else": {
        "properties": {
          "selectedList": {
            "minItems": 1
          }
        }
      }
    },
    "servicenowKnowledgeBaseName": {
      "type": "string",
        "minLength": 1
    },
    "servicenowKnowledgeBaseUrl": {
      "type": "string",
        "format": "uri"
    },
    "servicenowTicketsEnabled": {
      "type": "boolean"
    },
    "servicenowTicketsName": {
      "type": "string",
        "minLength": 1
    },
    "servicenowTicketsUrl": {
      "type": "string",
        "format": "uri"
    },
    "servicenowCreateTicketsEnabled": {
      "type": "boolean"
    },
    "servicenowNotificationEnabled": {
      "type": "boolean"
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "servicenowEnabled": {
            "const": true
          }
        }
      },
      "then": {
        "required": [
          "servicenowEnabled",
          "servicenowBaseUrl"
        ]
      },
      "else": {
        "required": [
          "servicenowEnabled"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "servicenowKnowledgeBaseEnabled": {
            "const": true
          }
        }
      },
      "then": {
        "required": [
          "servicenowKnowledgeBaseUrl",
          "servicenowKnowledgeBaseName",
          "servicenowKnowledgeBaseSelected"
        ]
      },
      "else": true
    }
  ],
    "additionalProperties": false
}

的测试用例失败

{
  servicenowEnabled: false,
  servicenowBaseUrl: 'http: //base-url.service-now.com',
  servicenowClientId: 'clientID',
  servicenowClientSecret: 'clientSecret'
}

我甚至try 添加Not Required而不是Else:没错,但没有效果,我也try 了几种方法,但似乎都不起作用.我只想让一个字段严格可用,否则基于其他一些布尔值

推荐答案

您在第34行的架构中有一个错误,没有正确定义properties.

我为你准备了if, then份报表.现在,您提供的示例正在传递.

  • 在条件架构的if部分中,servicenowEnabled必须是required.
  • 如果值为true,则servicenowBaseUrlrequired

第二个allOf条件语句也是如此

  • servicenowKnowledgeBaseEnabled必须为required才能正确验证.

注意事项 在if个模式中必须使用"Required"关键字,否则,如果未定义任何属性,则将应用所有属性,或者在存在if, then个条件的根模式中应用required

我还添加了对selectedListrequired属性的更多限制,以及在满足showAll: false条件时对selectedList本身的要求.

请判断一下,让我知道这对你是否有效.

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Update app config Support & Ticketing",
  "type": "object",
  "properties": {
    "servicenowEnabled": {
      "type": "boolean"
    },
    "servicenowClientId": {
      "type": "string"
    },
    "servicenowClientSecret": {
      "type": "string"
    },
    "servicenowBaseUrl": {
      "type": "string",
      "format": "regex",
      "pattern": ".*service-now.com$"
    },
    "servicenowKnowledgeBaseEnabled": {
      "type": "boolean"
    },
    "servicenowKnowledgeBaseSelected": {
      "type": "object",
      "properties": {
        "showAll": {
          "type": "boolean"
        },
        "selectedList": {
          "type": "array",
          "items": {
            "type": "object",
            "required": ["id", "name"],
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "name": {
                "type": "string",
                "minLength": 1
              }
            }
          }
        }
      },
      "required": ["showAll"],
      "if": {
        "properties": {
          "showAll": {
            "const": false
          }
        }
      },
      "then": {
        "required": ["selectedList"],
        "properties": {
          "selectedList": {
            "minItems": 1
          }
        }
      }
    },
    "servicenowKnowledgeBaseName": {
      "type": "string",
      "minLength": 1
    },
    "servicenowKnowledgeBaseUrl": {
      "type": "string",
      "format": "uri"
    },
    "servicenowTicketsEnabled": {
      "type": "boolean"
    },
    "servicenowTicketsName": {
      "type": "string",
      "minLength": 1
    },
    "servicenowTicketsUrl": {
      "type": "string",
      "format": "uri"
    },
    "servicenowCreateTicketsEnabled": {
      "type": "boolean"
    },
    "servicenowNotificationEnabled": {
      "type": "boolean"
    }
  },
  "allOf": [
    {
      "if": {
        "required": ["servicenowEnabled"],
        "properties": {
          "servicenowEnabled": {
            "const": true
          }
        }
      },
      "then": {
        "required": ["servicenowBaseUrl"]
      }
    },
    {
      "if": {
        "required": ["servicenowKnowledgeBaseEnabled"],
        "properties": {
          "servicenowKnowledgeBaseEnabled": {
            "const": true
          }
        }
      },
      "then": {
        "required": [
          "servicenowKnowledgeBaseUrl",
          "servicenowKnowledgeBaseName",
          "servicenowKnowledgeBaseSelected"
        ]
      }
    }
  ],
  "additionalProperties": false
}

Javascript相关问答推荐

promise .all()永不解决

使用ReactJS对Ant Design表中的空值进行排序

如何在alpinejs中显示dev中x-for的元素

脚本.js:3:20未捕获的类型错误:无法读取空的属性(读取addEventHandler)

React Native平面列表自动滚动

react 路由加载程序行为

从mat—country—select获取整个Country数组

如何解决chrome—extension代码中的错误,它会实时覆盖google—meet的面部图像?'

微软Edge编辑和重新发送未显示""

Redux查询多个数据库Api reducerPath&

嵌套异步JavaScript(微任务和macrotask队列)

阿波罗返回的数据错误,但在网络判断器中是正确的

使用LocaleCompare()进行排序时,首先使用大写字母

使用原型判断对象是否为类的实例

如何从HTML对话框中检索单选项组的值?

未加载css colored颜色 ,无法将div设置为可见和不可见

钛中的onClick事件需要在两次点击之间等待几秒钟

TypeError:无法读取未定义的属性(正在读取';宽度';)

以编程方式聚焦的链接将被聚焦,但样式不适用

有没有一种直接的方法可以深度嵌套在一个JavaScript对象中?