依赖于嵌套值的存在

Dependency on the existence of a nested value

我可以获得 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 ... }
}