2

JSON スキーマには、JSON オブジェクトの必須フィールドをリストするrequiredプロパティがあります。たとえば、次の (簡略化された) スキーマは、テキスト メッセージをユーザーに送信する呼び出しを検証します。

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

複数のユーザーにメッセージを送信できるようにしたいとします。つまり、userIdフィールドまたは配列のいずれかを持ちますuserIds(ただし、両方または両方ではありません)。JSONスキーマでそのような条件を表現する方法はありますか?

当然のことながら、この場合の問題を解決する方法はいくつかあります。たとえば、userId要素が 1 つだけの配列などです。しかし、一般的なケースは興味深く便利です。

4

2 に答える 2

1

allOfまったくエレガントではありませんが、とからハックできると思いますoneOf。何かのようなもの:

 {
   "allOf" : [
      {
        "type" : "object",
        "properties" : {
          // base properties come here
        }
      },
      "oneOf" : [
        {
        "properties" : {
             "userIds" : {"type" : "array"}
          },
          "required" : ["userIds"]
        },
        {
          "properties" : {
             "userId" : {"type" : "number"}
          },
          "required" : ["userId"]
        }
      ]
   ]
}
于 2016-07-15T11:04:41.267 に答える