2016-06-16 74 views
1

我需要oneOf值和value_num作爲必填字段而不是兩個。這些選項都不適用於我。我嘗試添加「additionalProperties」:false.Tried刪除值和value_num字段聲明。Json模式 - oneOf字段需要需要

{ 
"$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

幾乎是固定的這樣的問題:

{ 
"$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_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} 
    } 
] 

}

3

oneOf應該是這樣的

"oneOf": [ 
    { "required": ["value"] }, 
    { "required": ["value_num"] } 
] 

這是說無論是「價值」或「value_num」一定是必需的,但不能同時使用。