PostgreSQL jsonb_build_object() 函数使用指南

PostgreSQL jsonb_build_object() 函数从可变的参数列表(由交替的交替的键和值组成)中创建 JSONB 对象并返回。

此函数与 json_build_object() 函数类似。

jsonb_build_object() 语法

这是 PostgreSQL jsonb_build_object() 函数的语法:

jsonb_build_object(VARIADIC any_value) -> JSONB

参数

any_value
必需的。 是一个可变的参数列表。您可以传入任意类型的任意数量的参数。按照约定,参数由交替的键和值组成。您必须提供偶数个参数。

返回值

PostgreSQL jsonb_build_object() 函数返回一个 JSONB 对象,他从由交替的键和值组成的可变的参数列表构建而来。

jsonb_build_object() 函数会评估可变参数列表中的每个参数,其中,作为键的参数被强制转为文本,作为值的参数按照 to_jsonb() 转为 JSONB 值。

如果可变参数列表中的参数的数量不是偶数, PostgreSQL 会给出一个错误。

jsonb_build_object() 示例

本示例展示了如何使用 PostgreSQL jsonb_build_object() 函数构建一个 JSONB 对象。

SELECT jsonb_build_object(1, 'a', true, row(2, 'b', false));
                  jsonb_build_object
-------------------------------------------------------
 {"1": "a", "true": {"f1": 2, "f2": "b", "f3": false}}

这里,我们在函数中使用了 4 个参数: 1, 'a', true, row(2, 'b', false)。 其中 1true 为键, 'a'row(2, 'b', false) 为值。

首先,jsonb_build_object() 函数将每个参数转为对应的值:

  • 1 为键,被转为 "1"
  • 'a'1 的值,被转为 "a"
  • true 为键,被转为 "true"
  • row(2, 'b', false)true 的值,被转为 {"f1":2,"f2":"b","f3":false}}

然后,jsonb_build_object() 函数返回由所有的键值组成的 JSONB 对象: {"1" : "a", "true" : {"f1":2,"f2":"b","f3":false}}