我需要oneOf value和value_num作为必填字段而不是两者都存在。这些选项都不适用于我。我尝试添加“additionalProperties”:false.Tried删除value和value_num字段声明。
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"observation": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"timestamp": {
"type": "string",
"format": "date-time"
},
"eventType": {
"type": "string"
},
"value": {
"type": "object"
},
"value_num": {
"type": "number"
}
},
"oneOf": [{
"properties": {
"value": {
"type": "object"
},
"required": ["value"]
}
}, {
"properties": {
"value_num": {
"type": "number"
},
"required": ["value_num"]
}
}],
"required": [
"timestamp",
"eventType"
]
}
}
},
"required": [
"observation"
]
}
我尝试在items.properties块中添加oneOf。
我真正想要的是:"oneOf": [{"value", "value_num"}],
感谢任何帮助。
TIA,
答案 0 :(得分:3)
您的oneOf
应该是这样的
"oneOf": [
{ "required": ["value"] },
{ "required": ["value_num"] }
]
这表示必须要么是“value”或“value_num”,而不是两者都需要。
答案 1 :(得分:0)
几乎解决了这样的问题:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"observation": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"timestamp": {
"type": "string",
"format": "date-time"
},
"eventType": {
"type": "string"
},
"value": {
"type": "object"
},
"value_num": {
"type": "number"
}
},
"oneOf": [{"value": {
"type": "object"
},
"value_num": {
"type": "number"
}}],
"required": [
"timestamp",
"eventType"
]
}
}
},
"required": [
"observation"
]
}
它没有失效的是像这样的有效载荷,其中value和value_num都存在且只应存在1:
{
"info": {
"deviceId": "482038028341324",
"companionId": "asdfas76df76sdf",
"userId": "1234"
},
"observation": [{
"timestamp": "2013-12-31T23:59:59-01:00",
"eventType": "BOOT_EVENT",
"value_num": 6,
"value": {"boot":true}
}
]
}