O SQLite
json_group_array()
function é uma função agregada que retorna uma matriz JSON composta por todos os valores na agregação. Em outras palavras, ele constrói um array a partir dos valores fornecidos por seu argumento.
Sintaxe
json_group_array(X)
Onde
X
representa o(s) elemento(s) que a matriz resultante consistirá. Exemplo
Aqui está um exemplo simples para demonstrar:
SELECT json_group_array( "Fritz" );
Resultado:
["Fritz"]
Podemos ver que um array foi retornado, com o valor que fornecemos.
No entanto, o verdadeiro poder dessa função é demonstrado em cenários que usam dados agregados (como nos exemplos de banco de dados abaixo). Afinal, poderíamos ter usado o
json_array()
função para o exemplo acima:SELECT json_array( "Fritz" );
Resultado:
["Fritz"]
Como mencionado, o verdadeiro poder desta função está em lidar com dados agregados. Portanto,
json_group_array()
normalmente seria usado ao consultar um banco de dados. Exemplo de banco de dados
Suponha que temos a seguinte tabela:
SELECT * FROM Pets;
Resultado:
+-------+---------+--------+ | PetId | PetName | TypeId | +-------+---------+--------+ | 1 | Homer | 3 | | 2 | Yelp | 1 | | 3 | Fluff | 2 | | 4 | Brush | 4 | +-------+---------+--------+
Podemos ver que existem três colunas e podemos ver seus nomes.
Podemos usar o
json_group_array()
assim:SELECT json_group_array(TypeId)
FROM Pets;
Resultado:
[3,1,2,4]
Aqui, criei um array que consiste em todos os
TypeId
valores. Podemos dar um passo adiante e passar outra função JSON como argumento para
json_group_array()
. Por exemplo, se quiséssemos produzir um objeto JSON para cada linha no banco de dados, poderíamos usar o
json_object()
função na mesa assim:SELECT json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
FROM Pets;
Resultado:
{"PetId":1,"PetName":"Homer","TypeId":3} {"PetId":2,"PetName":"Yelp","TypeId":1} {"PetId":3,"PetName":"Fluff","TypeId":2} {"PetId":4,"PetName":"Brush","TypeId":4}
Podemos então usar o
json_group_array()
função para fornecer uma matriz externa:SELECT json_group_array(
json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
)
FROM Pets;
Resultado:
[{"PetId":1,"PetName":"Homer","TypeId":3},{"PetId":2,"PetName":"Yelp","TypeId":1},{"PetId":3,"PetName":"Fluff","TypeId":2},{"PetId":4,"PetName":"Brush","TypeId":4}]
Agora, todos os documentos JSON que foram produzidos por
json_object()
são colocados em uma matriz que foi produzida por json_group_array()
.