かなり複雑なAPIクエリ構文を記述するjsonスキーマがあります。一部のプロパティはパターンマッチングされていますが、パターン以外の値(つまり、他の明示的な文字列)も受け入れる必要があります。多数のjsonスキーマサイトのどこにもこの例を見つけることができないようです。
例:
{
"type": "object",
"properties": {
"$gte": {
"type": "string",
"pattern": "<some-pattern>"
}
}
}
上記の例で私ができることは、$gte
は、制約された値の特定のセットのいずれかです。たとえば、この特定の実装では、「$ gte」の値を次のいずれかに制限する必要があります。
{token}
サーバー側で特別な値に置き換えられますこの状況でoneOf
プロパティが使用されているのを見てきましたが、format
プロパティでのみ使用できるため、これが可能であると想定しています。実装方法の構文がわからないため、インスタンスは次のようになります。
{
"type": "object",
"properties": {
"$gte": {
"type": "string",
"oneOf": [
{"pattern": "<some-pattern>"},
"{token}",
"{another_token}"
]
}
}
}
私がjsonスキーマのドラフト4の仕様に慣れていなかったり、例を見つけたりしていないため、これを達成する方法を明確にしていただければ幸いです。
データを正確な値の固定セットの1つにする場合は、enum
を使用できます。
{
"type": "string",
"enum": ["stop", "go"]
}
だから、あなたの例にこれを合わせるために、試してください:
{
"type": "object",
"properties": {
"$gte": {
"type": "string",
"oneOf": [
{"pattern": "<some-pattern>"},
{"enum": ["TOKEN", "ANOTHER_TOKEN"]}
]
}
}
}