const : Any
const
AnyValidation succeeds if the instance is equal to this keyword’s value.
Value |
This keyword must be set to a JSON value
Hint: Use the jsonschema metaschema and jsonschema lint commands to catch keywords set to invalid values
|
---|---|
Kind | Assertion |
Applies To | Any |
Base Dialect | 2020-12 |
Changed In | None |
Introduced In | Draft 6 |
Vocabulary | Validation |
Specification | https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.1.3 |
Metaschema | https://json-schema.org/draft/2020-12/meta/validation |
Official Tests | draft2020-12/const.json |
Default | None |
Annotation | None |
Affected By | None |
Affects | None |
Also See |
|
The const
keyword (short for “constant”) restricts instances to a single
specific JSON value of any type.
Best Practice
Constraining instances to a constant value by definition
implies the given JSON type. Therefore, combining this keyword with the
type
keyword is redundant (or even
invalid if types don’t agree), and considered an
anti-pattern.
Common Pitfall
There are programming languages, such as JavaScript, that
cannot distinguish between integers and real
numbers. To accomodate for
those cases, JSON Schema considers a real number with a zero fractional part to
be equal to the corresponding integer. For example, in JSON Schema, 1
is
considered to be equal to 1.0
.
Examples
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"const": 5
}
5
5.0
1234
"Hello"
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"const": { "name": "John Doe", "age": 30 }
}
{ "name": "John Doe", "age": 30 }
{ "name": "Jane Doe", "age": 30 }
30