I want to describe with JSON schema array, which should consist of zero or more predefined values. To make it simple, let's have these possible values: one
, two
and three
.
Correct arrays (should pass validation):
[]
["one", "one"]
["one", "three"]
Incorrect:
["four"]
Now, I know the "enum"
property should be used, but I can't find relevant information where to put it.
Option A (under "items"
):
{
"type": "array",
"items": {
"type": "string",
"enum": ["one", "two", "three"]
}
}
Option B:
{
"type": "array",
"items": {
"type": "string"
},
"enum": ["one", "two", "three"]
}
Option A is correct and satisfy your requirements.
Update 20231108: type can be omitted. According to last json-schema specifications,
The enum keyword is used to restrict a value to a fixed set of values. It must be an array with at least one element, where each element is unique.
andYou can use enum even without a type, to accept values of different types.