JSON.GET
JSON.GET key [INDENT indent] [NEWLINE newline] [SPACE space] [path [path ...]]
- 可用版本
- Redis Open Source / JSON 1.0.0
- 时间复杂度
- 当 path 计算为单个值时为 O(N),其中 N 是值的大小;当 path 计算为多个值时为 O(N),其中 N 是键的大小
- ACL 类别
-
@json,@read,@slow,
以 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 返回一个 bulk string,表示一个包含字符串回复的 JSON 数组。每个字符串是与路径匹配的每个 JSON 值的 JSON 序列化结果。使用多个路径时,JSON.GET 返回一个 bulk string,表示一个包含字符串值的 JSON 对象。每个字符串值都是与路径匹配的每个 JSON 值的 JSON 序列化数组。有关回复的更多信息,请参阅 Redis 序列化协议规范。
示例
以 JSON 序列化形式返回 `path` 指定位置的值
创建一个 JSON 文档。
redis> JSON.SET doc $ '{"a":2, "b": 3, "nested": {"a": 4, "b": null}}'
OK使用单个 JSONPath(JSON 数组 bulk string)
redis> JSON.GET doc $..b
"[3,null]"使用包含至少一个 JSONPath 的多个路径时,返回一个包含顶级对象的 JSON 字符串,每个路径对应一个 JSON 值数组
redis> JSON.GET doc ..a $..b
"{\"$..b\":[3,null],\"..a\":[2,4]}"