Todos os produtos
Search
Central de documentação

MaxCompute:JSON_EXPLODE

Última atualização: Jun 26, 2026

A função JSON_EXPLODE do MaxCompute decompõe (expande) cada elemento de um array JSON ou objeto JSON em vários registros de linha. Este tópico descreve o uso da função JSON_EXPLODE e apresenta exemplos.

Formato do comando

JSON_EXPLODE(JSON <var>)

Descrição dos parâmetros

var: obrigatório. Aceita os tipos JSON_ARRAY ou JSON_OBJECT. Atualmente, não há suporte para constantes JSON, JSON STRING, JSON NUMBER, JSON BOOLEAN e NULL.

Valor retornado

Retorna as linhas convertidas no seguinte formato:

+-------+-------+
|  KEY  | VALUE |
|-------+-------|
  • Quando var é do tipo JSON ARRAY, o JSON ARRAY mais externo é expandido em várias linhas de dados JSON, onde KEY é NULL e VALUE corresponde aos elementos do JSON ARRAY.

  • Quando var é do tipo JSON OBJECT, cada KEY e VALUE do JSON OBJECT mais externo são expandidos em linhas com duas colunas, onde a coluna KEY (tipo STRING) armazena a chave do JSON OBJECT e a coluna VALUE (tipo JSON) armazena o valor do JSON OBJECT.

Exemplos de uso

Crie a tabela table_json e insira dados, onde a primeira linha é do tipo JSON OBJECT e a segunda linha é do tipo JSON ARRAY.

-- 创建表
CREATE TABLE table_json(c1 json);
-- 插入数据
INSERT INTO table_json(c1) SELECT JSON_OBJECT('a', 123,'b','hello');
INSERT INTO table_json(c1) SELECT JSON_ARRAY(1, true, 2, json'{"a":456}');
-- 查看表数据
SELECT * FROM table_json;

O resultado retornado é o seguinte.

+-----------------------------+
| c1                            |
+-------------------------------+
| {"a":123,"b":"hello"}         |
| [1,true,2,{"a":456}]          |
+-------------------------------+

Use a função JSON_EXPLODE para decompor (expandir) cada elemento do array JSON ou objeto JSON em várias linhas de saída. O exemplo de código é o seguinte.

SELECT JSON_EXPLODE(table_json.c1) FROM table_json;

O resultado retornado é o seguinte.

+-----+------------+
| key | value      |
+-----+------------+
| \N  | 1          |
| \N  | true       |
| \N  | 2          |
| \N  | {"a":456}  |
| a   | 123        |
| b   | hello      |
+-----+------------+
Nota

Durante a conversão de dados JSON, os elementos dentro de um mesmo registro mantêm a ordem original. No entanto, a ordem entre múltiplos registros JSON pode não ser preservada.