如何定義兩個彼此相互引用而不引起循環依賴的字段?避免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