| 函数 | 说明 | 返回值类型 |
|---|---|---|
array_to_json(array: anyelement[]) |
将数组返回为JSON或JSONB。 | json |
json_array_length(json: jsonb) → int |
返回最外面的JSON或JSONB数组中的元素数。 | int |
json_build_array(anyelement...) |
从可变参数列表中构建一个可能是异构类型的JSON或JSONB数组。 | json |
json_build_object(anyelement...) |
从可变参数列表中构建JSON对象。 | json |
json_extract_path(jsonb, string...) |
返回可变参数所指向的JSON值。 | json |
json_object(keys: string[], values: string[]) |
这种形式的json_object从两个单独的数组中成对地获取键和值。在所有其他方面,它与单参数形式相同。 | json |
json_object(texts: string[]) |
从文本数组构建JSON或JSONB对象。数组必须具有一维且成员数为偶数,在这种情况下,它们被视为交替的键/值对。 | json |
json_remove_path(val: jsonb, path: string[]) |
从JSON对象中删除指定的路径。 | json |
json_set(val: jsonb, path: string[], to: jsonb) |
返回可变参数所指向的JSON值。 | json |
json_set(val: jsonb, path: string[], to: jsonb, create_missing: bool) |
返回可变参数所指向的JSON值。如果create_missing为false,则不会将新键插入对象,也不会在值之前或之后添加值。 |
json |
json_strip_nulls(from_json: jsonb) |
返回from_json,其中所有具有空值的对象字段都被省略。其他空值保持不变。 | json |
json_typeof(val: jsonb) |
以文字字串传回最外层JSON值的类型。 | string |
jsonb_array_length(json: jsonb) |
返回最外面的JSON或JSONB数组中的元素数。 | int |
jsonb_build_array(anyelement...) |
从可变参数列表中构建一个可能是异构类型的JSON或JSONB数组。 | int |
jsonb_build_object(anyelement...) |
从可变参数列表中构建JSON对象。 | json |
jsonb_extract_path(jsonb, string...) |
返回可变参数所指向的JSON值。 | json |
jsonb_insert(target: jsonb, path: string[], new_val: jsonb) |
返回可变参数所指向的JSON值。new_val将在路径目标之前插入。 |
jsonb |
jsonb_insert(target: jsonb, path: string[], new_val: jsonb, insert_after: bool) |
返回可变参数所指向的JSON值。如果insert_after为true(默认为false),new_val则将在路径目标之后插入。 |
jsonb |
jsonb_object(keys: string[], values: string[]) |
这种形式的json_object从两个单独的数组中成对地获取键和值。在所有其他方面,它与单参数形式相同。 | jsonb |
jsonb_object(texts: string[]) |
从文本数组构建JSON或JSONB对象。数组必须具有一维且成员数为偶数,在这种情况下,它们被视为交替的键/值对。 | jsonb |
jsonb_pretty(val: jsonb) |
以缩进和换行符的形式返回给定的JSON值。 | string |
jsonb_set(val: jsonb, path: string[], to: jsonb) |
返回可变参数所指向的JSON值。 | jsonb |
jsonb_set(val: jsonb, path: string[], to: jsonb, create_missing: bool) |
返回可变参数所指向的JSON值。如果create_missing为false,则不会将新键插入对象,也不会在值之前或之后添加值。 |
jsonb |
jsonb_strip_nulls(from_json: jsonb) |
返回from_json,其中所有具有空值的对象字段都被省略。其他空值保持不变。 | jsonb |
jsonb_typeof(val: jsonb) |
以文字字串传回最外层JSON值的类型。 | string |
to_json(val: anyelement) |
以JSON或JSONB的形式返回值。 | json |
to_jsonb(val: anyelement) |
以JSON或JSONB的形式返回值。 | jsonb |
to_json
select to_json('json type'::text);
to_json
---------------
"json type"
to_jsonb
select to_jsonb('json type'::text);
to_jsonb
---------------
"json type"
json_array_length
SELECT json_array_length('[1,2,3,4]');
json_array_length
---------------------
4
json_build_array
select json_build_array(1,2,'3',4,5);
json_build_array
---------------------
[1, 2, "3", 4, 5]
json_build_object
select json_build_object('1','2','3','4')
json_build_object
------------------------
{"1": "2", "3": "4"}
jsonb_pretty
数据准备
CREATE TABLE reports (rep_id int primary key, data json);
INSERT INTO reports (rep_id, data)
VALUES
(1, '{"objects":[{"album": 1, "src":"fooA.png", "pos": "top"}, {"album": 2, "src":"barB.png", "pos": "top"}], "background":"background.png"}')
, (2, '{"objects":[{"album": 1, "src":"fooA.png", "pos": "top"}, {"album": 2, "src":"barC.png", "pos": "top"}], "background":"bacakground.png"}')
, (3, '{"objects":[{"album": 1, "src":"fooA.png", "pos": "middle"},{"album": 2, "src":"barB.png", "pos": "middle"}],"background":"background.png"}')
, (4, '{"objects":[{"album": 1, "src":"fooA.png", "pos": "top"}, {"album": 3, "src":"barB.png", "pos": "top"}], "background":"backgroundA.png"}')
;
select jsonb_pretty( '{"name": "Alice", "agent": {"bot": true} }'::jsonb );
jsonb_pretty
-----------------------
{
"agent": {
"bot": true
},
"name": "Alice"
}
json_object_keys
返回最外层的json对象中的键的集合
select * from json_object_keys('{"b":"1","a":"2"}');
json_object_keys
--------------------
a
b
jsonb_set
json值的更新,jsonb_set函数,格式:jsonb_set(target jsonb,path text[],new_value jsonb[, create_missing boolean]),target指源jsonb数据,path指路径,new_value指更新后的键值,create_missing值为true表示键不存在则添加,为false表示如果键不存在则不添加。
select jsonb_set('{"name":"bob","age":"27"}'::jsonb,'{age}','"28"'::jsonb,false);
jsonb_set
--------------------------------
{"age": "28", "name": "bob"}
json_each
扩展最外层的json对象成为一组键值结果集
select * from json_each('{"b":"1","a":"2"}');
key | value
------+--------
a | "2"
b | "1"
json_each_text以文本返回结果
select * from json_each_text('{"b":"1","a":"2"}');
key | value
------+--------
a | 2
b | 1
json_object_keys
返回最外层的json对象中的键的集合
select * from json_object_keys('{"b":"1","a":"2"}');
json_object_keys
--------------------
a
b
json_typeof
以文字字串传回最外层JSON值的类型
select * from json_typeof('{"b":"1","a":"2"}');
json_typeof
---------------
object
json键值的删除用-
select '{"b":"1","a":"2"}'::json - 'a';
column
--------------
{"b": "1"}
- 删除嵌套
json数据
select '["a","b","c"]'::jsonb - 0;
column
------------
["b", "c"]
select '["a","b","c"]'::jsonb - 1;
column
------------
["a", "c"]
json_strip_nulls
select json_strip_nulls('[{"f1":1,"f2":null},2,null,3]');
json_strip_nulls
---------------------------
[{"f1": 1}, 2, null, 3]
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




