Skip to content

JSON_SCHEMA_VALIDATION_REPORT

功能描述

验证json_doc是否符合json_doc_schema并返回验证报告。

语法格式

JSON_SCHEMA_VALIDATION_REPORT( json_doc_schema, json_doc )

参数说明

  • json_doc_schema:JSON Schema文本,JSON类型或JSON String类型。
  • json_doc:JSON文本,JSON类型或JSON String类型。

说明:

如果任意参数为NULL返回NULL。

返回报告为如下键以及相应值组成的JSON对象:

  • valid:验证成功为true,失败为false。失败才会有下列键值对。
  • reason:失败原因。
  • schema-location:Schema的失败位置。
  • document-location:JSON文本的失败位置。
  • schema-failed-keyword:Schema的失败的关键字。

函数返回类型

JSON数值类型。

示例

json_doc_schema

json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "number",
      "minimum": 10,
      "maximum": 100
    },
    "num": {
      "type": "number",
      "minimum": 10,
      "maximum": 100
    }
  },
  "required": ["id", "num"]
}

json_doc

json
{
  "id": 100,
  "num": 101
}

判断JSON文本是否符合JSON模式,并返回验证报告。

sql
SQL> SELECT TO_CHAR(JSON_SCHEMA_VALIDATION_REPORT('{"type": "object", "properties": { "id": {"type": "number", "minimum": 10, "maximum": 100}, 
"num": {"type": "number", "minimum": 10, "maximum": 100} }, "required": ["id", "num"] }', '{"id": 100, "num": 101}'));

EXPR1 | 
------------------------------------------------------------------------------
{"valid": false, "reason": "The JSON document location '#/num' failed requirement 'maximum' at JSON Schema location '#/properties/num'", 
"schema-location": "#/properties/num", "document-location": "#/num", "schema-failed-keyword": "maximum"}|

报告显示:id的值为100,符合Schema的要求,但num的值为101,超出了Schema定义的最大值100。