JSON列类型接受无效的JSON
例如
可以插入{}
,而不必关闭.count()
JSON和字符串之间有区别吗?
答案 0 :(得分:2)
正如{strong> zerkms 在评论中所述,[1,2,3]
是有效的 JSON ,它回答了主要问题: JSON之间是否有任何区别?和字符串?
答案是肯定的。全新的查询操作,函数等集合适用于json
或jsonb
列,不适用于text
(或相关类型)列。
例如,使用text
或json
时,在使用jsonb
列时,您需要使用正则表达式和相关的字符串函数来解析字符串(或自定义函数)存在一组单独的查询运算符,它们在 JSON 的结构化性质内工作。
在Postgres doc中,给出以下 JSON :
{
"guid": "9c36adc1-7fb5-4d5b-83b4-90356a46061a",
"name": "Angela Barton",
"is_active": true,
"company": "Magnafone",
"address": "178 Howard Place, Gulf, Washington, 702",
"registered": "2009-11-07T08:53:22 +08:00",
"latitude": 19.793713,
"longitude": 86.513373,
"tags": [
"enim",
"aliquip",
"qui"
]
}
然后文档说:
我们将这些文档存储在名为api的表中,命名为jsonb列 jdoc。如果在此列上创建了GIN索引,则查询类似于 以下可以利用索引:
-- Find documents in which the key "company" has value "Magnafone"
SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"company": "Magnafone"}';
这使您对jsonb
(或json
)字段的查询与仅作为text
或相关字段的查询完全不同。
这里有一些Postgres doc,提供了其中一些查询运算符和函数。
基本上,如果您有要作为 JSON 数据处理的 JSON 数据,则最好将列指定为json
或{{1} }(选择哪种格式取决于要分别将其存储为纯文本还是二进制)。
答案 1 :(得分:0)
以上数据可以存储为文本,但是JSON数据类型的优势在于您可以在这些列中应用JSON规则。 JSON指定了一些功能,这些功能不能用于文本字段。
Refer to this link to understand about the json functions/procedures