json 函数介绍

  1. 云栖社区>
  2. 博客>
  3. 正文

json 函数介绍

whatcat 2018-01-24 09:37:19 浏览907
展开阅读全文

摘要: 这篇博客主要介绍的是 json, json_build_array, json_build_object, json_object, json_to_record,
json_to_recordset,


介绍 json 函数
json_build_array() 和 json_build_object 允许建立任意复杂的 json 树,
json_object() 变成一两个二维数组或两个单独的数组, 输入 json_object 的是 键值对, 类似于 hstore () 函数。
json_object_agg() 将两个json对象变量成为一个单独的json对象,作为名字部分

现在我们来通过具体的查询语句来了解这些 json 函数

json_build_array

json_build_object
json_object
json_to_record
json_to_recordset

现在开始, 我们一一介绍。

json_build_array

这个函数是根据不同类型的不同值构建json数组。搜易,你可以创建根据 text, number 等构建

select json_build_array('depesz', 123, 3.14, 'postgresql');

      json_build_array          

["depesz", 123, 3.14, "postgresql"]
(1 row)

json_build_object

返回基于参数的对象(散列?) , 假设奇数参数是键, 甚至参数是值, 如下所示:


select json_build_object('pi', 3.14, 'database', 'postgresql');
        json_build_object            

{"pi" : 3.14, "database" : "postgresql"}
(1 row)

json_object

这里有两个函数, 他们具有相同的名字, 但是他们的参数不一样, 所以,我们需要具体的例子来显示。

json_object 只有一个参数的时候, 他的作用类似于 json_build_object()


select json_object ('{pi, 3.14, database, postgresql}' :: text[]);
    json_object                

{"pi" : "3.14", "database" : "postgresql"}
(1 row)

json_object 它具有两个数组, 且数组内的值任意


select json_object('{e, pi, tau}'::text[], '{2.718, 3.141, 6.283}'::text[] );
              json_object                    

{"e" : "2.718", "pi" : "3.141", "tau" : "6.283"}
(1 row)

json_to_record

将给定的json对象转换为自定义(按调用要求)数据类型的记录


select * from json_to_record ('{"pi":"3.14","database":"postgresql"}', true) as j (pi numeric, database text);

上述语句中 json_to_record 的第二个参数是 ‘true’ , 这是为什么呢?
从测试中可以推断, 如果有数组嵌套结构 (即对象中的给定键值不是一个标量,它是一个对象或者数组), 那么
如果我们将第二个参数修改为 'false', 函数将会失败,


ERROR: cannot call json_populate_record on a nest object

通过这种方式可以避免对复杂结构拆包操作。

json_to_recordset

json_to_recordset 的作用和json_to_record作用是一样的, 但是他可以返回多个json对象


select * from json_to_recordset (
'[{"name":"e", "value":2.718}, 
  {"name":"pi", "value":3.141},
  {"name":"tau", "value":6.283}]', true

) as x (name text, value numeric);

">https://www.depesz.com/2014/01/30/waiting-for-9-4-new-json-functions/>

网友评论

登录后评论
0/500
评论
whatcat
+ 关注