PostgreSQL jsonb_object() 函数使用指南
PostgreSQL jsonb_object()
函数从一个文本数组构建一个 JSONB 对象,或者从两个分别作为键和值的数组构建一个 JSONB 对象。
jsonb_object()
语法
PostgreSQL jsonb_object()
函数的语法有两种形式:
jsonb_object(kv_array TEXT[]) -> JSONB
或者
jsonb_object(k_array TEXT[], v_array TEXT[]) -> JSONB
参数
kv_array
- 必需的。 一个文本数组。他可以是一个一维数组,它必须由偶数个元素,且由交替的作为键和值的元素组成。它也可以是一个二维数组,且每个内部数组必须具有两个元素,他们的作为键和值。
k_array
- 必需的。 一个包含了键的文本数组。其中的元素和值数组中的元素一一对应组成键值对。
v_array
- 必需的。 一个包含了值的文本数组。其中的元素和键数组中的元素一一对应组成键值对。
返回值
PostgreSQL jsonb_object()
函数返回一个 JSONB 对象。
jsonb_object()
函数会评估可变参数列表中的每个参数,所有的值都转换为 JSONB 字符串。
单个数组参数形式中的数组中的元素数量必须是偶数, 否则 PostgreSQL 会给出一个错误。
两个数组参数形式中的键数组和值数组必须具有相同数量的元素, 否则 PostgreSQL 会给出一个错误。
jsonb_object()
示例
示例 1
以下示例展示了如何使用 PostgreSQL jsonb_object()
函数从一个一维数组构建一个 JSONB 对象。
SELECT jsonb_object(ARRAY[1, 'a', true, row(2, 'b', false)]::TEXT[]);
jsonb_object
-------------------------------
{"1": "a", "true": "(2,b,f)"}
这里对于单参数形式中的以为数组来说,数组中的元素作为交替的键和值使用:
1
被用作键'a'
被用作值true
被用作键row(2, 'b', false)
被用作值
示例 2
以下示例展示了如何使用 PostgreSQL jsonb_object()
函数从一个二维数组构建一个 JSONB 对象。
SELECT jsonb_object('{{1, 2}, {3, 4}, {a, 6}}');
jsonb_object
--------------------------------
{"1": "2", "3": "4", "a": "6"}
这里,每个二维数组中的内部数组的两个元素分别作为键和值:
- 在
{1, 2}
中,1
被用作键,2
被用作值 - 在
{3, 4}
中,3
被用作键,4
被用作值 - 在
{a, 6}
中,a
被用作键,6
被用作值
示例 3
本示例展示了如何使用 PostgreSQL jsonb_object()
函数从两个一维数组构建一个 JSONB 对象。
SELECT jsonb_object('{x, y}', '{1, 2}');
jsonb_object
----------------------
{"x": "1", "y": "2"}
这里,键数组 {x, y}
和值数组 {1, 2}
中的元素一一对应形成键值对。