A especificação do esquema JSON diz o seguinte [1] :
The "$schema" keyword SHOULD be used in the document root schema object, and MAY be used in the root schema objects of embedded schema resources. It MUST NOT appear in non-resource root schema objects.
Não estou claro o que isso significa. O que é um "objeto de esquema raiz sem recurso"?
Os subesquemas podem conter a $schema
palavra-chave, por exemplo,
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "array",
"maxItems": 3,
"unevaluatedItems": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "integer"
}
}
Colei esse esquema no validador Hyperjump online e o validador não sinalizou um erro, então presumo que não há problema (embora não seja recomendado) colocar $schema
subesquemas. Sim?
O uso
$schema
em um subesquema que não seja um recurso de esquema (identificado por$id
) é, na verdade, proibido pela especificação 2020-12.Um subesquema se torna uma raiz de recurso se contiver um
$id
que forneça ao subesquema um novo URI base.No seu caso, o Hyperjump provavelmente está ignorando a palavra-chave porque ela
$id
está ausente ou o$schema
valor não foi alterado no esquema pai.Para completar, meu validador, https://json-everything.net/json-schema , também não o sinaliza. Discutirei com a equipe para ver se isso deve ser considerado um bug.