MySQL JSON_SCHEMA_VALID() 函数使用指南
MySQL JSON_SCHEMA_VALID()
函数根据指定的 JSON 模式验证一个 JSON 文档,并返回 1
表是验证通过或者返回 0
表示验证不通过。
JSON_SCHEMA_VALID()
语法
这里是 MySQL JSON_SCHEMA_VALID()
的语法:
JSON_SCHEMA_VALID(schema, json_doc)
参数
schema
- 必需的。一个 JSON 模式。它必须是一个有效的 JSON 对象。
json_doc
- 必需的。被验证的 JSON 文档。
返回值
JSON_SCHEMA_VALID()
函数返回 1
或 0
; 1
表示 JSON 文档通过了验证, 0
表示 JSON 文档没有通过验证。
如果任何一个参数为 NULL
,此函数将返回 NULL
。
JSON_SCHEMA_VALID()
示例
本示例展示了如何使用 JSON_SCHEMA_VALID()
函数验证一个 JSON 文档是否符合一个 JSON 模式。
首先,让我们创建一个 JSON 模式:
SET @schema = '{
"id": "http://json-schema.org/geo",
"$schema": "http://json-schema.org/draft-04/schema#",
"description": "A geographical coordinate",
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"y": {
"type": "number",
"minimum": -180,
"maximum": 180
}
},
"required": ["x", "y"]
}';
这里,我们创建了 JSON 模式,其中:
-
"type": "object"
表示 JSON 文档必须是一个 JSON 对象。 -
"properties"
中定义了对象中的成员列表,以及每个成员的约束。这里的定义了两个成员:x
- 数字类型,最大值是90
,最小值是-90
。y
- 数字类型,最大值是180
,最小值是-180
。
-
"required": ["x", "y"]
定义了对象中必须有成员x
和y
。
接着,让我们创建一个 JSON 文档:
SET @json_doc = '{"x": 1, "y": 2}';
然后,让我们验证 JSON 文档是否和 JSON 模式匹配:
SELECT JSON_SCHEMA_VALID(@schema, @json_doc);
+---------------------------------------+
| JSON_SCHEMA_VALID(@schema, @json_doc) |
+---------------------------------------+
| 1 |
+---------------------------------------+
这说明 @json_doc
是符合 @schema
定义的。
如果我们改一下 JSON 文档,去掉了对象中的成员 y
:
SET @json_doc = '{"x": 1}';
让我们再次验证 JSON 文档是否和 JSON 模式匹配:
SELECT JSON_SCHEMA_VALID(@schema, @json_doc);
+---------------------------------------+
| JSON_SCHEMA_VALID(@schema, @json_doc) |
+---------------------------------------+
| 0 |
+---------------------------------------+
这里,因为 JSON 模式中定义了 y
是必须的成员,所以 JSON_SCHEMA_VALID()
函数返回了 0
.
除此之外,您还可以将 JSON_SCHEMA_VALID()
用于 JSON
字段的 CHECK
约束上。