JSON.GET
JSON.GET key [INDENT indent] [NEWLINE newline] [SPACE space] [path [path ...]]
- 可用版本
- Redis Stack / JSON 1.0.0
- 时间复杂度
- 当路径被评估为单个值时为 O(N),其中 N 是值的大小;当路径被评估为多个值时为 O(N),其中 N 是键的大小
返回 JSON 序列化形式的 JSON 中 path
的值
必需参数
key
是要解析的键。
可选参数
path
是用于指定的 JSONPath。默认值为根 $
。JSON.GET 接受多个 path
参数。
当使用单个 JSONPath 时,匹配值的根是一个 JSON 字符串,其顶级值为序列化 JSON 值的数组。相比之下,传统路径返回单个值。
当使用多个 JSONPath 参数时,匹配值的根是一个 JSON 字符串,其顶级值为对象,每个对象值都是序列化 JSON 值的顶级数组。相比之下,如果所有路径都是传统路径,则每个对象值都是单个序列化 JSON 值。如果存在多个包含传统路径和 JSONPath 的路径,则返回的值符合 JSONPath 版本(值数组)。
INDENT
设置嵌套级别的缩进字符串。
NEWLINE
设置打印在每行末尾的字符串。
SPACE
设置放在键和值之间的字符串。
通过以下示例使用 redis-cli
生成格式良好的 JSON
~/$ redis-cli --raw
redis> JSON.GET myjsonkey INDENT "\t" NEWLINE "\n" SPACE " " path.to.value[1]
返回
JSON.GET 返回一个表示 JSON 字符串数组的批量字符串。每个字符串都是匹配路径的每个 JSON 值的 JSON 序列化。使用多个路径,JSON.GET 返回一个表示 JSON 对象(具有字符串值)的批量字符串。每个字符串值都是匹配路径的每个 JSON 值的 JSON 序列化数组。有关回复的更多信息,请参见 Redis 序列化协议规范.
示例
返回 JSON 序列化形式的 JSON 中 path
的值
创建一个 JSON 文档。
redis> JSON.SET doc $ '{"a":2, "b": 3, "nested": {"a": 4, "b": null}}'
OK
使用单个 JSONPath(JSON 数组批量字符串)
redis> JSON.GET doc $..b
"[3,null]"
使用多个路径,其中至少一个 JSONPath 将返回一个 JSON 字符串,其顶级对象包含每个路径的 JSON 值数组
redis> JSON.GET doc ..a $..b
"{\"$..b\":[3,null],\"..a\":[2,4]}"