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]}"См. также
Связанные темы
© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/json.get/