2017-07-27 3 views
0

Mr Bobさんは、幸せでも悲しいこともありますが、両方ではありません。彼は気分を特定していない可能性があります。したがって、悲しみと幸福の両方の特性はオプションです。スキーマの上両方のブール値のプロパティの値を確実に同時にtrueにするべきではありませんか?

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "type": "object", 
    "properties": { 
    "happy": { 
     "type": "boolean", 
     "default": false 
    }, 
    "sad": { 
     "type": "boolean", 
     "default": false 
    } 
    }, 
    "not": { 
    "allOf": [ 
     { 
     "properties": { 
      "happy": { 
      "enum": [ 
       true 
      ] 
      } 
     } 
     }, 
     { 
     "properties": { 
      "sad": { 
      "enum": [ 
       true 
      ] 
      } 
     } 
     } 
    ] 
    } 
} 

は、ケースプロパティに失敗し、「悲しい」「幸せ真とプロパティです:のみ、以下のJSONここ

{ 
    "name": "Bob", 
    "sad": true, 
    "happy": true 
} 

拒否するJSONスキーマだろう何

は失敗します" 不足している。

+0

その場合、「気分」が幸せ、悲しい、またはヌルになることは理にかなっていませんか? – jonrsharpe

+0

こんにちは@jonrsharpeいいえ、私たちはモデルを変更することはできません。そのようなもの.. :( あなたはそれをとることができます*両方のプロパティの値が同時に真であるべきでないことを保証する方法* – Nilesh

答えて

1

あなたはかなり近いです。私がしたことは、あなたが持っているものを単純化してrequiredを追加することでした。

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "type": "object", 
    "properties": { 
    "happy": { 
     "type": "boolean", 
     "default": false 
    }, 
    "sad": { 
     "type": "boolean", 
     "default": false 
    } 
    }, 
    "not": { 
    "properties": { 
     "happy": { "enum": [true] }, 
     "sad": { "enum": [true] } 
    }, 
    "required": ["happy", "sad"] 
    } 
} 
関連する問題