$dynamicAnchor : String
$dynamicAnchor
StringThis keyword is used to create plain name fragments that are not tied to any particular structural location for referencing purposes, which are taken into consideration for dynamic referencing.
Value | This keyword must be set to a string starting with a letter and containing letters, digits, hyphens, underscores, colons, or periods |
---|---|
Kind | Identifier |
Applies To | Any |
Dialect | 2020-12 |
Changed In | None |
Introduced In | 2020-12 |
Vocabulary | Core |
Specification | https://json-schema.org/draft/2020-12/json-schema-core.html#section-8.2.2 |
Metaschema | https://json-schema.org/draft/2020-12/meta/core |
Official Tests | draft2020-12/dynamicRef.json |
Default | None |
Annotation | None |
Affected By | None |
Affects |
|
Also See |
The $dynamicAnchor
keyword allows the creation of plain name fragments that are not tied to a particular structural location within a schema. This is particularly useful for making subschemas reusable and relocatable without needing to update JSON Pointer references. Unlike $anchor
, $dynamicAnchor
indicates an extension point when used with the $dynamicRef
keyword, facilitating the extension of recursive schemas without imposing specific semantics on that extension. Without $dynamicRef
, $dynamicAnchor
behaves the same as $anchor
.
Examples
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/root",
"$ref": "list",
"$defs": {
"foo": {
"$dynamicAnchor": "items",
"type": "string"
},
"list": {
"$id": "list",
"type": "array",
"items": {
"$dynamicRef": "#items"
},
"$defs": {
"items": {
"$dynamicAnchor": "items",
"type": "number"
}
}
}
}
}
[ "foo", "bar" ]
[ "foo", 42 ]
Note: A $dynamicRef
referencing a $dynamicAnchor
within the same schema resource functions similarly to a standard $ref
referencing an $anchor
. Similarly, a $dynamicRef
referencing an $anchor
within the same schema resource behaves like a typical $ref
referencing an $anchor
. Likewise, a $ref
targeting a $dynamicAnchor
within the same schema resource behaves like a regular $ref
targeting an $anchor
.