SQLite json_each() 函数使用指南
SQLite json_each()
函数遍历指定 JSON 文档,为每个直接子元素生成一行,最终返回由所有的行组成的结果集。
SQLite json_each()
函数只遍历 JSON 对象或者数组的直接子元素,或者如果元素为原始类型,则遍历元素本身。
SQLite json_each()
函数是一个表值函数,类似的函数有: json_tree()
。
json_each()
语法
这里是 SQLite json_each()
的语法:
json_each(json, path)
参数
json
- 必需的。一个 JSON 文档。
path
- 可选的。一个路径表达式。
返回值
SQLite json_each()
函数返回一个具有以下列的结果集:
key
- 如果 JSON 为数组,则
key
列为数组的索引;如果 JSON 为对象,则key
列为对象的成员名称;其他情况,key
列为NULL
。 value
- 当前元素的值。
type
- 当前元素的 JSON 类型。可能的值:
'null'
、'true'
、'false'
、'integer'
、'real'
、'text'
、'array'
、'object'
。 他们与json_type()
函数相同。 atom
- 如果
value
是 JSON 原始类型,atom
存储其对应的 SQL 值;否则该列为NULL
。 id
- 标识此行唯一性的一个整数。
parent
- 父元素的整数 ID。 此列永远为
NULL
。 fullkey
- 它是当前行元素的路径。
path
- 当前行元素的父元素的路径。
json_each()
示例
这里列出了几个常见的 json_each()
用法示例。
示例: 数组
在这个示例中,我们使用 json_each()
函数遍历一个 JSON 数组中的元素:
SELECT * FROM json_each('[1, 2, 3]');
key value type atom id parent fullkey path
--- ----- ------- ---- -- ------ ------- ----
0 1 integer 1 1 $[0] $
1 2 integer 2 2 $[1] $
2 3 integer 3 3 $[2] $
示例: 对象
在这个示例中,我们使用 json_each()
函数遍历一个 JSON 对象中的元素:
SELECT * FROM json_each('{"x": 1, "y": 2}');
key value type atom id parent fullkey path
--- ----- ------- ---- -- ------ ------- ----
x 1 integer 1 2 $.x $
y 2 integer 2 4 $.y $
示例:指定路径
在这个示例中,我们使用 json_each()
函数遍历一个 JSON 数组中的通过路径指定的元素:
SELECT * FROM json_each('[{"x": 1, "y": 2}]', '$[0]');
key value type atom id parent fullkey path
--- ----- ------- ---- -- ------ ------- ----
x 1 integer 1 3 $[0].x $[0]
y 2 integer 2 5 $[0].y $[0]