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 valorfalse
.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.