JSON 数据类型是用来存储JSON(JavaScript Object Notation)数据的。JSON数据类型有两种:json和jsonb。json数据类型存储输入文本的精准拷贝,处理函数必须在每次执行时必须重新解析该数据。而jsonb数据存储在二进制格式中,因为需要做附加的转换,jsonb输入速度比json慢,处理速度会快(因为不需要做解析)。同时jsonb还支持索引。
JSON数据类型输入/输出语法:
-- 简单标量/基本值
-- 基本值可以是数字、带引号的字符串、true、false或者null
SELECT '5'::json;
json
------
5
(1 row)
-- 有零个或者更多元素的数组(元素不需要为同一类型)
SELECT '[1, 2, "foo", null]'::json;
json
---------------------
[1, 2, "foo", null]
(1 row)
-- 包含键值对的对象
-- 注意对象键必须总是带引号的字符串
SELECT '{"bar": "baz", "balance": 7.77, "active": false}'::json;
json
--------------------------------------------------
{"bar": "baz", "balance": 7.77, "active": false}
(1 row)
-- 数组和对象可以被任意嵌套
SELECT '{"foo": [true, "bar"], "tags": {"a": 1, "b": null}}'::json;
json
-----------------------------------------------------
{"foo": [true, "bar"], "tags": {"a": 1, "b": null}}
(1 row)