The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

[
{
"description": "dynamic $recursiveRef destination (not predictable at schema compile time)",
"schema": {
"$id": "main.json",
"$defs": {
"inner": {
"$id": "inner.json",
"$recursiveAnchor": true,
"title": "inner",
"additionalProperties": {
"$recursiveRef": "#"
}
}
},
"if": { "propertyNames": { "pattern": "^[a-m]" } },
"then": {
"title": "any type of node",
"$id": "anyLeafNode.json",
"$recursiveAnchor": true,
"$ref": "main.json#/$defs/inner"
},
"else": {
"title": "integer node",
"$id": "integerNode.json",
"$recursiveAnchor": true,
"type": [ "object", "integer" ],
"$ref": "main.json#/$defs/inner"
}
},
"tests": [
{
"description": "numeric node",
"data": { "alpha": 1.1 },
"valid": true
},
{
"description": "integer node",
"data": { "november": 1.1 },
"valid": false
}
]
},
{
"description": "$recursiveRef points to a boolean schema",
"schema": {
"$defs": {
"true": true,
"false": false
},
"properties": {
"true": {
"$recursiveRef": "#/$defs/true"
},
"false": {
"$recursiveRef": "#/$defs/false"
}
}
},
"tests": [
{
"description": "follow $recursiveRef to a true schema",
"data": { "true": 1 },
"valid": true
},
{
"description": "follow $recursiveRef to a false schema",
"data": { "false": 1 },
"valid": false
}
]
}
]