是否有更好的解決方案來限制屬性名稱,然後跟隨?限制JSON模式中的屬性
{
"type": "object",
"not": {
"anyOf": [{
"required": ["a"]
}, {
"required": ["b"]
}]
}
}
我願意接受除a
或b
任何屬性。有關作品的解決方案,但它非常複雜,我的python驗證器中的驗證錯誤消息很奇怪。
是否有更好的解決方案來限制屬性名稱,然後跟隨?限制JSON模式中的屬性
{
"type": "object",
"not": {
"anyOf": [{
"required": ["a"]
}, {
"required": ["b"]
}]
}
}
我願意接受除a
或b
任何屬性。有關作品的解決方案,但它非常複雜,我的python驗證器中的驗證錯誤消息很奇怪。
您的解決方案很好,可讀性強。我可以看到它是如何產生奇怪的驗證錯誤(not
總是使這些錯誤變得複雜),但我認爲模式本身很好地解釋了約束條件。
使用oneOf
(例如{"oneOf": [{}, {"required": ["a"]}]}
)可以縮短几個字節,但我認爲它不可讀。
你也可以做一些可怕的事情與patternProperties
(即除了做"a"
/"b"
匹配任何東西,然後使用additionalProperties
正則表達式),但同樣我認爲這是不太可讀。
我認爲你有的解決方案是好的。
如果你有興趣在如何與patternProperties做到這一點,你可以這樣做:
{
"type": "object",
"patternProperties": {
"[aA]": {
"not": {}
},
"[bB]": {
"not": {}
}
}
我需要一個類似的解決方案,支持甩不區分大小寫的屬性名稱。從草案4開始,我使用的實現不支持正則表達式模式「/ i」來忽略大小寫。