2016-07-06 21 views
0

JSONスキーマにはa required propertyがあり、JSONオブジェクトの必須フィールドをリストしています。JSONスキーマ:必須フィールドのXOR

{ 
    "type": "object", 
    "properties": { 
    "userId": { "type": "string" }, 
    "text":  { "type": "string" }, 
    }, 
    "required": ["userId", "text"] 
} 

私はuserIdフィールド、またはいずれかを持っているつまり、複数のユーザーにメッセージを送信可能にするとします。たとえば、以下の(簡体字)スキーマは、ユーザーにテキストメッセージを送信し、コールを検証しますuserIdsの配列(両方または両方ではありません)。そのような条件をJSONスキーマで表現する方法はありますか?

当然、この場合の問題を克服する方法があります。たとえば、1つの要素を持つuserIdアレイですが、一般的なケースは興味深く便利です。

答えて

2

全くエレガントではありませんが、allOfoneOfからハックすることができます。次のようなもの:

{ 
    "allOf" : [ 
     { 
     "type" : "object", 
     "properties" : { 
      // base properties come here 
     } 
     }, 
     "oneOf" : [ 
     { 
     "properties" : { 
      "userIds" : {"type" : "array"} 
      }, 
      "required" : ["userIds"] 
     }, 
     { 
      "properties" : { 
      "userId" : {"type" : "number"} 
      }, 
      "required" : ["userId"] 
     } 
     ] 
    ] 
} 
関連する問題