Spec-Zone.ru › Redis

JSON.GET

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 — размер ключа

Возвращает значение по path в формате JSON

Примеры

Обязательные аргументы

key

это ключ для обработки.

Необязательные аргументы

path

это JSONPath для указания. По умолчанию это корень $. JSON.GET принимает несколько path аргументов.

Примечание

При использовании одного JSONPath корень совпадающих значений — это JSON-строка с верхнеуровневым массивом сериализованных JSON-значений. В отличие от этого, при использовании legacy-пути возвращается единственное значение.

При использовании нескольких аргументов JSONPath корень совпадающих значений — это JSON-строка с верхнеуровневым объектом, где каждое значение объекта является верхнеуровневым массивом сериализованных JSON-значений. В отличие от этого, если все пути являются legacy-путями, каждое значение объекта — это единственное сериализованное JSON-значение. Если есть несколько путей, включающих как legacy-пути, так и JSONPath, возвращаемое значение соответствует версии JSONPath (массив значений).

INDENT

устанавливает строку отступа для вложенных уровней.

NEWLINE

устанавливает строку, которая печатается в конце каждой строки.

SPACE

устанавливает строку, которая вставляется между ключом и значением.

Примечание

Создайте отформатированный JSON с помощью redis-cli, следуя этому примеру:

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

Возвращаемое значение

JSON.GET возвращает строку bulk, представляющую массив JSON строк ответов. Каждая строка — это JSON-сериализация каждого JSON-значения, соответствующего пути. Используя несколько путей, JSON.GET возвращает строку bulk, представляющую JSON-объект со строковыми значениями. Каждое строковое значение — массив JSON-сериализаций каждого JSON-значения, соответствующего пути. Для получения дополнительной информации об ответах обратитесь к спецификации протокола сериализации Redis.

Примеры

Возвращает значение по path в формате JSON

Создайте JSON-документ.

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

С использованием одного JSONPath (JSON-массив bulk-строка):

127.0.0.1:6379>  JSON.GET doc $..b
"[3,null]"

Использование нескольких путей с хотя бы одним JSONPath возвращает JSON-строку с верхнеуровневым объектом с массивом JSON-значений на каждый путь:

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

См. также

JSON.SET | JSON.MGET

Связанные темы

  • RedisJSON
  • Индексирование и поиск JSON-документов

© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/json.get/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API