From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

[
{
"description": "type can be inferred from const and enum values",
"comment": "in some languages, 6 and '6' are equal in both stringwise and numeric comparisons, but the JSON type model is more strict",
"schema": {
"properties": {
"const_string": { "const": "6" },
"const_number": { "const": 6 },
"enum_string": { "enum": [ "6" ] },
"enum_number": { "enum": [ 6 ] }
}
},
"tests": [
{
"description": "const numeric value does not match string",
"data": { "const_string": 6 },
"valid": false
},
{
"description": "const numeric value does match number",
"data": { "const_number": 6 },
"valid": true
},
{
"description": "const string value matches string",
"data": { "const_string": "6" },
"valid": true
},
{
"description": "const string value does not match number",
"data": { "const_number": "6" },
"valid": false
},
{
"description": "enum numeric value does not match string",
"data": { "enum_string": 6 },
"valid": false
},
{
"description": "enum numeric value does match number",
"data": { "enum_number": 6 },
"valid": true
},
{
"description": "enum string value matches string",
"data": { "enum_string": "6" },
"valid": true
},
{
"description": "enum string value does not match number",
"data": { "enum_number": "6" },
"valid": false
}
]
}
]