Последнее обновление
JSON_EACH
Описание
Табличная функция json_each разворачивает JSON-объект верхнего уровня в набор пар ключ/значение. Каждая строка содержит один ключ (key) и соответствующее ему значение (value). Столбец value сохраняет тип JSON, поэтому строковые значения возвращаются с сохранением кавычек JSON.
Необходимо использовать с LATERAL VIEW.
Синтаксис
JSON_EACH(<json_str>)
Параметры
| Параметр | Описание |
|---|---|
<json_str> | Строка JSON для разворачивания. Содержимое должно быть JSON-объектом. |
Возвращаемое значение
Возвращает данные в виде нескольких столбцов и строк. Каждая строка соответствует одной паре ключ/значение в JSON-объекте:
| Столбец | Тип | Описание |
|---|---|---|
key | String | Имя ключа из JSON-объекта |
value | JSON | Соответствующее значение с сохранением типа JSON (строковые значения содержат кавычки, например "foo") |
Особые случаи:
- Если
<json_str>равен NULL, возвращается 0 строк - Если
<json_str>является пустым объектом ({}), возвращается 0 строк
Примеры
Базовое использование: разворачивание JSON-объекта со строковыми значениями
SELECT k, v
FROM (SELECT 1) dummy
LATERAL VIEW json_each('{"a":"foo","b":"bar"}') t AS k, v;
+---+-------+
| k | v |
+---+-------+
| a | "foo" |
| b | "bar" |
+---+-------+
Столбец
valueимеет тип JSON, поэтому строковые значения сохраняют кавычки JSON.
JSON-объект со значениями разных типов
SELECT k, v
FROM (SELECT 1) dummy
LATERAL VIEW json_each('{"str":"hello","num":42,"bool":true,"null_val":null,"arr":[1,2]}') t AS k, v;
+----------+---------+
| k | v |
+----------+---------+
| str | "hello" |
| num | 42 |
| bool | true |
| null_val | NULL |
| arr | [1,2] |
+----------+---------+
Параметр NULL: возвращается 0 строк
SELECT k, v
FROM (SELECT 1) dummy
LATERAL VIEW json_each(NULL) t AS k, v;
-- Empty set
Пустой объект: возвращается 0 строк
SELECT k, v
FROM (SELECT 1) dummy
LATERAL VIEW json_each('{}') t AS k, v;
-- Empty set