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 序列化数组。

参见

JSON.SET | JSON.MGET

资料来源:Redis 官方 JSON.GET 文档;中文内容参考 Redis 文档许可。