依赖于嵌套值的存在

问题描述

我可以让 dependencies 使用非嵌套值(架构中的顶级),但我希望依赖项依赖于嵌套在 object 中的属性定义。

const schema = {
  type: "object",properties: {
    start: {
      type: "object",properties: {
        time: {
          type: "string"
        }
      }
    }
  },dependencies: {
    start: {
      properties: {
        end: {
          type: "object",properties: {
            time: {
              type: "string"
            }
          }
        }
      }
    }
  }
};

从本质上讲,我希望依赖项依赖于 start 属性,而是依赖于 start.time 属性

我查看了 this 问题,答案指出架构不能“向上”查看树,尽管我不完全确定在这种情况下“向上”和“向下”是什么意思。>

在我看来,如果依赖可以依赖于 start,并且 timestart 中的一个属性,那么 time 是树的“下层”,不是“向上”(?)

解决方法

dependencies 关键字的存在是为了简化特定用例的架构。它为更简单的语法牺牲了一些灵活性和表现力。尽管您的用例非常相似,但它超出了 dependencies 的功能范围。好消息是有办法做到这一点。

这个,

{
  "dependencies": {
    "some-propery-name": { ... some-schema ... }
  }
}

相当于,

{
  "if": { "required": ["some-property-name"] },"then": { ... some-schema ... }
}

您可以从那里推断以描述您的用例。

{
  "if": {
    "properties": {
      "start": { "required": ["time"] }
    },"required": ["start"]
  },"then": { ... some-schema ... }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...