我在JSON中有一组两个不相关的参数分组是互斥的。关于哪个参数组应保留在JSON文件中的决定由另一个参数驱动。
我不确定这是否应该通过使用这种特殊结构来处理,或者确实如果它甚至属于最佳实践。
在第一种情况下,我们的合约类型为Fixed
,其中有两个特定于fixedEnd
和fixedEndUnit
的参数。
在第二种情况下,我们有一个Variable
类型的合约,该合约只有一个特定于variableEnd
的参数。
合约只能是固定或可变。而且,这两种合约类型都具有共同的价值foo
,bar
和baz
。
我应该如何构建我的JSON
第一个案例
"contract":[
{
"type":"Fixed",
"fixedEnd":12,
"fixedEndUnit":"Months",
"foo":"foo",
"bar":"bar",
"baz":"baz"
}]
第二种情况
"contract":[
{
"type":"Variable",
"variableEnd":"2012-03-19T07:22Z",
"foo":"foo",
"bar":"bar",
"baz":"baz"
}]
答案 0 :(得分:0)
解决方案是为每种类型的合同添加oneOf
,并在required
中添加两组oneOf
值:
"agreement": {
"items": {
"additionalProperties": true,
"id": "/properties/contract/items/properties/agreement",
"properties": {
"type": {
"id": "/properties/contract/items/properties/discounts/type",
"type": "string",
"pattern": "£(\\d+\\.)?\\d"
},
"fixedEnd": {
"id": "/properties/contract/items/properties/discounts/fixedEnd",
"type": "string",
"pattern": "6"
},
"fixedValue": {
"id": "/properties/contract/items/properties/discounts/fixedValue",
"type": "string",
"pattern": "kWh"
},
"variableEnd": {
"id": "/properties/contract/items/properties/discounts/variableEnd",
"type": "string",
"pattern": "6"
}
},
"oneOf": [{
"required": ["type", "fixedend", "fixedValue"]
},
{
"required": ["type", "variableEnd"]
}
]
}
}