创建 JSON 值
JSON 值必须是由对象(JSON 对象)、数组、字符串、数字、布尔值(false/true)或 null 组成。其中 false、true 和 null 只允许小写形式。
JSON 文本结构
JSON 文本结构包括字符、字符串、数字和三个字面量名称。在任何一个结构字符的之前或之后都允许使用各种间隔符,包括空格、水平制表符、换行和回车等。
开始数组 = [ 左方括号
开始对象 = { 左大括号
结束数组 = ] 右方括号
最终对象 = } 右大括号
名称分隔符 = : 冒号
值分隔符 = , 逗号
对象
对象的结构表示为一对大括号包含 0 个或多个名称/值对(或成员)。对象内的名称应该是唯一的。一个名称是一个字符串,每个名称后面都有一个冒号,用于分隔名称和值。单个逗号用于多个名称/值的分割。 示例如下:
{ "NAME": "SAM", "Height": 175, "Weight": 100,"Registered" : false}
数组
数组的结构表示为一个方括号包含 0 个或多个值(也称为元素)。数组元素用逗号分隔,不要求数组中的值相同。
示例如下:
["abc", 10, null, true, false]
数字
数字使用十进制格式,包含一个整数分量,也可能是以一个减号(-)为前缀(可选),后面可以跟一个分数部分和/或指数部分。不允许前导为零。小数部分是一个小数点后跟一位或多位数字。指数部分以 大写或小写字母 E 开头,后面可以跟一个加号(+)或减号(-)。E 和可选符号后可以跟随一位或多位数字。
示例如下:
[100, 0, -100, 100.11, -12.11, 10.22e2, -10.22e2]
字符串
一个字符串开始和结束都使用引号(")。所有 Unicode 字符都可以放在引号内,除了必须转义的字符(包括引号、反斜线和控制字符)。
JSON 文本应以 UTF-8、UTF-16 或 UTF-32 编码。默认的编码为 UTF-8。
示例如下:
{"Url": "http://www.example.com/image/481989943"}
创建 JSON 值
seekdb 支持对 JSON 类型执行以下 DDL 操作:
-
创建带有 JSON 列的表。
-
增加/删除 JSON 列。
-
基于生成列为 JSON 类型的列创建索引。
-
支持建表时开启半结构化编码。
-
支持修改已有表启用半结构化编码。
使用限制
用户可以在每个表上创建多个 JSON 类型的列,但是具有以下的限制:
-
JSON 类型的列不能作为
PRIMARY KEY、FOREIGN KEY和UNIQUE KEY,但是可以添加NOT NULL或CHECK约束。 -
JSON 类型的列上不可以包含默认值。
-
JSON 类型的列不能作为分区键。
-
JSON 数据长度不能超过
LONGTEXT的长度,每个 JSON 对象或数组的最大深度为 99。