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