问题描述
我可以让 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
,并且 time
是 start
中的一个属性,那么 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 ... }
}