説明
この関数は、詳細な検証レポートを返すために使用されます。
構文
JSON_SCHEMA_VALIDATION_REPORT(schema, document)
説明
パラメータ
schemaは、JSON Schemaを指定するために使用され、Schemaは有効なJSONオブジェクトである必要があります。JSON Schemaでは、
requiredプロパティを使用して、必須のプロパティを強制することがサポートされています。JSON Schemaでは、
id、$schema、description、typeプロパティをサポートしますが、これらのプロパティを提供することは必須ではありません。
パラメータ
documentは、検証対象のJSONドキュメントを指定するために使用され、このJSONドキュメントは有効なJSONドキュメントである必要があります。パラメータのいずれかが有効なJSONでない場合、この関数はエラーを発生させます。
JSON_SCHEMA_VALID() 関数とは異なり、JSON_SCHEMA_VALIDATION_REPORT() 関数は詳細な検証レポートを返し、そのレポートはJSONオブジェクトです。JSONドキュメントがJSON Schema規格に適合している場合、この関数は valid プロパティの値が true のJSONオブジェクトを返します。JSONドキュメントがJSON Schema規格に適合しない場合、この関数は空ではないJSONオブジェクトを返し、その中に検証失敗の詳細情報が含まれます。
検証失敗の情報には、主に以下のプロパティ情報が含まれます:
valid:検証失敗時、この値は常にfalseです。reason:検証失敗の原因を表示します。schema-location:JSON Schema内で検証失敗した位置を示します。document-location:JSONドキュメント内で検証失敗した位置を示します。schema-failed-keyword:JSON Schema内で規格に違反するキーワードまたはプロパティ名を表示します。
例
以下の例では、
{'{"type": "string"}'を使用してJSONスキーマを定義し、このスキーマは有効なJSONデータが文字列型であることを示しています。'"JSON_doc"'は有効なJSON文字列であり、スキーマで定められた文字列型に適合します。obclient [infotest]> SELECT JSON_SCHEMA_VALIDATION_REPORT('{"type": "string"}', '"JSON_doc"');実行結果は次のとおりです:
+-------------------------------------------------------------------+ | JSON_SCHEMA_VALIDATION_REPORT('{"type": "string"}', '"JSON_doc"') | +-------------------------------------------------------------------+ | {"valid": true} | +-------------------------------------------------------------------+ 1 row in set以下の例では、
ageプロパティが18以上の整数であることを要求するJSONスキーマを定義しています。obclient [infotest]> SET @schema = '{"type": "object", "properties": {"age": {"type": "integer", "minimum": 18}}, "required": ["age"]}';JSONドキュメントを定義し、その
age値を17に設定します。これはJSONスキーマの仕様に適合しません。obclient [infotest]> SET @document = '{"age": 17}';JSON_SCHEMA_VALIDATION_REPORT()関数を使用して検証レポートを取得します。obclient [infotest]> SELECT JSON_SCHEMA_VALIDATION_REPORT(@schema, @document);実行結果は次のとおりです:
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | JSON_SCHEMA_VALIDATION_REPORT(@schema, @document) | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | {"valid": false, "reason": "The JSON document location '#/age' failed requirement 'minimum' at JSON Schema location '#/properties/age", "schema-location": "#/properties/age", "document-location": "#/age", "schema-failed-keyword": "minimum"} | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set