如何定义两个彼此相互引用而不引起循环依赖的字段?避免JSON模式定义中的循环依赖
在以下示例中,我希望min_percentage的最大值为max_percentage的最小值,max_percentage的最小值为min_percentage的最大值;
所以
"min_percentage": {
"type": "integer",
"minimum" : 1,
"maximum" : 99
}
"max_percentage": {
"type": "integer",
"minimum" : 2,
"maximum" : 150
}
变得像
"min_percentage": {
"type": "integer",
"minimum" : 1,
"maximum" : "#max_percentage#minimum"
}
"max_percentage": {
"type": "integer",
"minimum" : "#min_percentage#maximum",
"maximum" : 150
}
编辑:我想到了一个可能的解决方案..
这可以通过使用模式的依赖有可能 https://spacetelescope.github.io/understanding-json-schema/reference/object.html?highlight=default
我们只指定max_per centage,并使min_percentage成为依赖关系,那么#min_percentage#maximum可以基于#max_percentage#minimum去除任何循环依赖。
"max_percentage": {
"type": "integer",
"minimum" : 2,
"maximum" : 150
}
"dependencies": {
"max_percentage": {
"properties": {
"min_percentage": {
"type": "integer",
"minimum" : 1,
"maximum" : "#max_percentage#minimum"
}
},
"required": ["min_percentage"]
}
}
但显然这不能做.. Can JSON integer attributes be referenced?
感谢。
但是,这不会将min_percentage#maximum和max_percentage#minimum限制为min_max_percentage吗?如果是这样,我不想这样做,因为这些可以改变。 如果这是代码,我们可以让min_max_percentage采用第一个项目集的值,即如果max_percentage#minimum是先设置的,那么这将是它的新值,并反映在min_percentage#maximum的设置上。诀窍是在验证JSON的过程中让模式执行此操作,有什么想法? – Dodomac
虽然JSON不是代码,但它的意思是__efficient__对象__notation__。如果你想要表达一个完全成熟的关系模型,那么在这个评论之后,你最好使用像XML这样的更好的支持,这个支持我认为你想实现的东西。值得注意的是,它具有'DOM'(文档对象模型)以及引用,并且也可以执行'Schema验证'。 – HeroicKatora