在 postgresql 中识别 json 类型

Identify json type in postgresql

是否有函数或方法可以轻松确定 postgresql 中的 json 数据类型?

例如:

select key, value, pg_typeof(value) FROM jsonb_each('{"foo":1,"bar":"2","ack":[1,2,3]}'::jsonb)

Returns:

key value   pg_typeof
ack [1, 2, 3]   jsonb
bar "2" jsonb
foo 1   jsonb

如何判断ack的值是数组,bar是字符串,foo是数字?

从这里 JSON operators, jsonb_typeof:

 select key, value, jsonb_typeof(value) FROM jsonb_each('{"foo":1,"bar":"2","ack":[1,2,3]}'::jsonb);
 key |   value   | jsonb_typeof 
-----+-----------+--------------
 ack | [1, 2, 3] | array
 bar | "2"       | string
 foo | 1         | number