説明
この関数は、詳細な検証レポートを返します。
構文
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以下の例では、JSONスキーマを定義し、その
ageプロパティが18以上の整数である必要があることを要求しています。obclient [infotest]> SET @schema = '{"type": "object", "properties": {"age": {"type": "integer", "minimum": 18}}, "required": ["age"]}';ageの値が17であるJSONドキュメントを定義しますが、これは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