Skip to main content

JSON.GET

Syntax

JSON.GET key [INDENT indent] [NEWLINE newline] [SPACE space] [paths [paths ...]]

Time complexity: O(N) when path is evaluated to a single value where N is the size of the value, O(N) when path is evaluated to multiple values, where N is the size of the key

ACL categories: @json

Return the value at path in JSON serialized form

Examples

Required arguments

key

is key to parse.

Optional arguments

path

is JSONPath to specify. Default is root $. JSON.GET accepts multiple path arguments.

Note

When using a single JSONPath, the root of the matching values is a JSON string with a top-level array of serialized JSON value. In contrast, a legacy path returns a single value.

When using multiple JSONPath arguments, the root of the matching values is a JSON string with a top-level object, with each object value being a top-level array of serialized JSON value. In contrast, if all paths are legacy paths, each object value is a single serialized JSON value. If there are multiple paths that include both legacy path and JSONPath, the returned value conforms to the JSONPath version (an array of values).

INDENT

sets the indentation string for nested levels.

NEWLINE

sets the string that's printed at the end of each line.

SPACE

sets the string that's put between a key and a value.

Note

Produce pretty-formatted JSON with redis-cli by following this example:

~/$ redis-cli --raw
dragonfly> JSON.GET myjsonkey INDENT "\t" NEWLINE "\n" SPACE " " path.to.value[1]

Return

JSON.GET returns a bulk string representing a JSON array of string replies. Each string is the JSON serialization of each JSON value that matches a path. Using multiple paths, JSON.GET returns a bulk string representing a JSON object with string values. Each string value is an array of the JSON serialization of each JSON value that matches a path. For more information about replies, see Redis serialization protocol specification.

Examples

Return the value at path in JSON serialized form

Create a JSON document.

dragonfly> JSON.SET doc $ '{"a":2, "b": 3, "nested": {"a": 4, "b": null}}'
OK

With a single JSONPath (JSON array bulk string):

dragonfly> JSON.GET doc $..b
"[3,null]"

Using multiple paths with at least one JSONPath returns a JSON string with a top-level object with an array of JSON values per path:

dragonfly> JSON.GET doc ..a $..b
"{\"$..b\":[3,null],\"..a\":[2,4]}"

See also

JSON.SET | JSON.MGET