数据库

pg_jsonschema: JSON Schema 验证


JSON Schema 是一种用于注释和验证 JSON 文档的语言。pg_jsonschema 是一个 Postgres 扩展,它增加了根据 JSON Schema 文档验证 PostgreSQL 内置的 jsonjsonb 数据类型的能力。

启用扩展

  1. 进入 Dashboard 中的数据库页面
  2. 点击侧边栏中的 Extensions
  3. 搜索 pg_jsonschema 并启用该扩展

函数

使用方法

由于 pg_jsonschema 将其功能以函数形式暴露,我们可以通过 select 语句来执行:

1
2
3
4
5
select extensions.json_matches_schema( schema := '{"type": "object"}', instance := '{}' );

pg_jsonschema 通常与 check 约束 结合使用,用于约束 json/b 列的内容以匹配 JSON Schema。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
create table customer( id serial primary key, ... metadata json, check ( json_matches_schema( '{ "type": "object", "properties": { "tags": { "type": "array", "items": { "type": "string", "maxLength": 16 } } } }', metadata ) ));-- 示例:有效载荷insert into customer(metadata)values ('{"tags": ["vip", "darkmode-ui"]}');-- 结果:-- INSERT 0 1-- 示例:无效载荷insert into customer(metadata)values ('{"tags": [1, 3]}');-- 结果:-- ERROR: relation "customer" 的新行违反检查约束 "customer_metadata_check"-- DETAIL: 失败行包含 (2, {"tags": [1, 3]})。

相关资源