PostgreSQL json_object() 函数使用指南

PostgreSQL json_object() 函数从一个文本数组构建一个 JSON 对象,或者从两个分别作为键和值的数组构建一个 JSON 对象。

json_object() 语法

PostgreSQL json_object() 函数的语法有两种形式:

json_object(kv_array TEXT[]) -> JSON

或者

json_object(k_array TEXT[], v_array TEXT[]) -> JSON

参数

kv_array
必需的。 一个文本数组。他可以是一个一维数组,它必须由偶数个元素,且由交替的作为键和值的元素组成。它也可以是一个二维数组,且每个内部数组必须具有两个元素,他们的作为键和值。
k_array
必需的。 一个包含了键的文本数组。其中的元素和值数组中的元素一一对应组成键值对。
v_array
必需的。 一个包含了值的文本数组。其中的元素和键数组中的元素一一对应组成键值对。

返回值

PostgreSQL json_object() 函数返回一个 JSON 对象。

json_object() 函数会评估可变参数列表中的每个参数,所有的值都转换为 JSON 字符串。

单个数组参数形式中的数组中的元素数量必须是偶数, 否则 PostgreSQL 会给出一个错误。

两个数组参数形式中的键数组和值数组必须具有相同数量的元素, 否则 PostgreSQL 会给出一个错误。

json_object() 示例

示例 1

以下示例展示了如何使用 PostgreSQL json_object() 函数从一个一维数组构建一个 JSON 对象。

SELECT json_object(ARRAY[1, 'a', true, row(2, 'b', false)]::TEXT[]);
           json_object
---------------------------------
 {"1" : "a", "true" : "(2,b,f)"}

这里对于单参数形式中的以为数组来说,数组中的元素作为交替的键和值使用:

  • 1 被用作键
  • 'a' 被用作值
  • true 被用作键
  • row(2, 'b', false) 被用作值

示例 2

以下示例展示了如何使用 PostgreSQL json_object() 函数从一个二维数组构建一个 JSON 对象。

SELECT json_object('{{1, 2}, {3, 4}, {a, 6}}');
            json_object
-----------------------------------
 {"1" : "2", "3" : "4", "a" : "6"}

这里,每个二维数组中的内部数组的两个元素分别作为键和值:

  • {1, 2} 中, 1 被用作键, 2 被用作值
  • {3, 4} 中, 3 被用作键, 4 被用作值
  • {a, 6} 中, a 被用作键, 6 被用作值

示例 3

本示例展示了如何使用 PostgreSQL json_object() 函数从两个一维数组构建一个 JSON 对象。

SELECT json_object('{x, y}', '{1, 2}');
      json_object
------------------------
 {"x" : "1", "y" : "2"}

这里,键数组 {x, y} 和值数组 {1, 2} 中的元素一一对应形成键值对。