MySQL JSON_SCHEMA_VALIDATION_REPORT

Resumo : neste tutorial, você aprenderá como usar a JSON_SCHEMA_VALIDATION_REPORT()função MySQL para validar documentos JSON em um esquema especificado.

Introdução à função JSON_SCHEMA_VALIDATION_REPORT() do MySQL

A JSON_SCHEMA_VALIDATION_REPORT()função valida documentos JSON em relação a um esquema JSON especificado e fornece um relatório detalhado sobre falhas de validação.

Aqui está a sintaxe da JSON_SCHEMA_VALIDATION_REPORT()função:

JSON_SCHEMA_VALIDATION_REPORT(json_schema, json_document)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

  • json_schema: o esquema JSON no qual você deseja validar o documento JSON.
  • json_document: o documento JSON que você deseja validar.

Se o documento JSON for válido com base no esquema JSON, a JSON_SCHEMA_VALIDATION_REPORT()função retornará um objeto JSON com uma propriedade  valid com o valor true.

Se o documento JSON falhar na validação, a JSON_SCHEMA_VALIDATION_REPORT()função retornará um objeto JSON que inclui as seguintes propriedades:

  • valid: com o valor false.
  • reason: contém o motivo da falha.
  • schema-location: um fragmento de URI de ponteiro JSON identifica o local preciso no esquema JSON onde a validação encontrou um problema.
  • document-location: um fragmento de URI de ponteiro JSON especifica o local exato no documento JSON onde a validação encontrou um erro.
  • schema-failed-keyword: uma string que nomeia a palavra-chave ou propriedade específica no esquema JSON que foi violada.

Exemplos de funções JSON_SCHEMA_VALIDATION_REPORT() do MySQL

Vejamos um exemplo de uso da JSON_SCHEMA_VALIDATION_REPORT()função.

Primeiro, configure um esquema JSON para detalhes do funcionário:

SET @employee_schema = '{
    "type": "object",
    "properties": {
        "name": {"type": "string"},
        "age": {"type": "integer"},
        "department": {"type": "string"}
    },
    "required": ["name", "age", "department"]
}';Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, valide um documento JSON em relação ao esquema:

SET @valid_employee = '{
    "name": "John",
    "age": 30,
    "department": "HR"
}';

SELECT JSON_SCHEMA_VALIDATION_REPORT(@employee_schema, @valid_employee) result;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Ele retorna um objeto JSON que possui a propriedade valid com o valor true porque o documento JSON é válido de acordo com o esquema:

+-----------------+
| result          |
+-----------------+
| {"valid": true} |
+-----------------+
1 row in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Terceiro, use a JSON_SCHEMA_VALIDATION_REPORT()função para validar o documento JSON inválido:

SET @invalid_employee = '{
    "name": "Alice",
    "age": "25",  
    "department": "IT"
}';

SELECT 
  JSON_PRETTY(
    JSON_SCHEMA_VALIDATION_REPORT(
      @employee_schema, @invalid_employee
    )
  ) result;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Observe que usamos a JSON_PRETTY()função para imprimir a saída para melhor legibilidade.

Ele retorna a seguinte saída:

-------------------------------------------------------------+
| result                                                                                                                                                                                                                                                  |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| {
  "valid": false,
  "reason": "The JSON document location '#/age' failed requirement 'type' at JSON Schema location '#/properties/age'",
  "schema-location": "#/properties/age",
  "document-location": "#/age",
  "schema-failed-keyword": "type"
} |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A saída explica o motivo da falha no objeto de razão de que o tipo de idade não é válido de acordo com o esquema.

Resumo

  • Use a JSON_SCHEMA_VALIDATION_REPORT()função para validar documentos JSON em um esquema JSON especificado.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *