説明
この関数は、詳細な検証レポートを返します。
構文
JSON_SCHEMA_VALIDATION_REPORT(schema, document)
説明
パラメータ
schemaはJSONスキーマを指定するために使用され、そのスキーマは有効なJSONオブジェクトである必要があります。JSONスキーマでは、
required属性を使用して必須のプロパティを強制することができます。JSONスキーマでは
id、$schema、description、type属性をサポートしますが、これらの属性の提供は必須ではありません。
パラメータ
documentは検証対象のJSONドキュメントを指定するために使用され、このJSONドキュメントは有効なJSONドキュメントである必要があります。パラメータのいずれか一方が有効なJSONでない場合、この関数はエラーを発生させます。
JSON_SCHEMA_VALID() 関数とは異なり、JSON_SCHEMA_VALIDATION_REPORT() 関数は詳細な検証レポートを返し、そのレポートはJSONオブジェクトです。JSONドキュメントがJSONスキーマ仕様に適合している場合、この関数は valid プロパティの値が true のJSONオブジェクトを返します。JSONドキュメントがJSONスキーマ仕様に適合しない場合、この関数は検証失敗の詳細情報を含む、非空のJSONオブジェクトを返します。
検証失敗の情報には主に以下のプロパティ情報が含まれます:
valid:検証失敗時、この値は常にfalseです。reason:検証失敗の原因を示します。schema-location:JSONスキーマ内で検証失敗した位置を示します。document-location:JSONドキュメント内で検証失敗した位置を示します。schema-failed-keyword:JSONスキーマで仕様に違反するキーワードまたはプロパティ名を示します。
例
以下の例では、
'{"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 Schemaを定義し、その
age属性が18以上の整数であることを要求しています。obclient [infotest]> SET @schema = '{"type": "object", "properties": {"age": {"type": "integer", "minimum": 18}}, "required": ["age"]}';ageの値が17のJSONドキュメントを定義します。これはJSON Schemaの仕様に適合しません。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