JSON.GET
获取路径中的JSON值
语法
JSON.GET key [INDENT indent] [NEWLINE newline] [SPACE space] [path [path ...]]
引入版本:1.0.0
复杂度摘要:O(N)
以JSON序列化形式返回path处的值
必需参数
key
解析的关键。
可选参数
path
是JSONPath来指定。默认为根 $。 JSON.GET 接受多个 path 参数。
[!NOTE] 当使用单个 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]
示例
Return the value at path in JSON serialized form
创建 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]}"
Redis Software 与 Redis Cloud 兼容性
| Redis 软件 |
Redis Cloud |
说明 |
|---|---|---|
| ✅ 支持 |
✅ 灵活且每年一次 ✅ 免费和固定 |
返回值
RESP2
批量字符串回复:表示指定路径处的值的 JSON 编码字符串。
对于单个路径,返回该路径处的值的 JSON 序列化。对于多个路径,返回一个 JSON 对象,其中每个键都是一个路径,每个值都是一个 JSON 序列化数组。
RESP3
批量字符串回复:JSON 编码的字符串,具有包含指定路径处的值的顶级数组。
对于使用 $(RESP3 中默认)的单个路径,返回包含序列化值的 JSON 数组。对于多个路径,返回一个 JSON 对象,其中每个键都是一个路径,每个值都是一个 JSON 序列化数组。
参见
相关主题
资料来源:Redis 官方 JSON.GET 文档;中文内容参考 Redis 文档许可。