Перейти к основному содержимому

json_keys

Возвращает ключи верхнего уровня из JSON-объекта в виде JSON-массива или, если указан path, ключи верхнего уровня из указанного пути.

подсказка

Все JSON-функции и операторы перечислены в навигации и на странице обзора

Ускорьте ваши запросы с помощью генерируемых столбцов

Синтаксис

json_keys(json_doc[, path])

Параметры

json_doc: обязательный. JSON-документ, для которого нужно вернуть ключи. Должен быть JSON-объектом.

path: необязательный. Путь обычно начинается с $ и использует . в качестве разделителя пути. [] используется как индекс массива, который начинается с 0.

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

Возвращает JSON-массив.

Возвращается пустой массив, если JSON-объект пустой.

Возвращается NULL, если JSON-документ не является JSON-объектом или путь не идентифицирует значение в документе.

Если JSON-документ является массивом, вложенным в JSON-объект, вы можете использовать параметр path для получения ключей из этого объекта.

Примеры

Пример 1: Возвращает пустой массив, поскольку входной JSON-объект пустой.

select json_keys('{}');
+-----------------+
| json_keys('{}') |
+-----------------+
| [] |
+-----------------+

Пример 2: Возвращает ключи JSON-объекта.

select json_keys('{"a": 1, "b": 2, "c": 3}');
+----------------+
| json_keys('1') |
+----------------+
|["a", "b", "c"] |
+----------------+

Пример 3: Возвращает ключи JSON-объекта, который соответствует указанному пути.

select json_keys('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c');
+---------------------------------------------------------------------+
| json_keys('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c') |
+---------------------------------------------------------------------+
| ["d", "e", "f"] |
+---------------------------------------------------------------------+

Пример 4: Путь не существует.

select json_keys('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.e');
+---------------------------------------------------------------------+
| json_keys('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.e') |
+---------------------------------------------------------------------+
| NULL |
+---------------------------------------------------------------------+

Пример 5: JSON-документ не является JSON-объектом.

select json_keys('[1, 2, {"a": 1, "b": 2}]');
+---------------------------------------+
| json_keys('[1, 2, {"a": 1, "b": 2}]') |
+---------------------------------------+
| NULL |
+---------------------------------------+

Пример 6: JSON-документ является массивом, вложенным в JSON-объект. Указан путь для получения ключей из этого объекта.

select json_keys('[0, 1, {"a": 1, "b": 2}]', '$[2]');
+-----------------------------------------------+
| json_keys('[0, 1, {"a": 1, "b": 2}]', '$[2]') |
+-----------------------------------------------+
| ["a", "b"] |
+-----------------------------------------------+