SQLite json_group_array()
function è una funzione aggregata che restituisce una matrice JSON composta da tutti i valori nell'aggregazione.
In altre parole, costruisce un array dai valori forniti dal suo argomento.
Sintassi
json_group_array(X)
Dove X
rappresenta l'elemento o gli elementi di cui sarà composto l'array risultante.
Esempio
Ecco un semplice esempio da dimostrare:
SELECT json_group_array( "Fritz" );
Risultato:
["Fritz"]
Possiamo vedere che è stato restituito un array, con il valore che abbiamo fornito.
Tuttavia, la vera potenza di questa funzione è dimostrata in scenari che utilizzano dati aggregati (come negli esempi di database seguenti). Dopotutto, avremmo potuto semplicemente usare json_array()
funzione per l'esempio precedente:
SELECT json_array( "Fritz" );
Risultato:
["Fritz"]
Come accennato, il vero potere di questa funzione sta nel trattare i dati aggregati. Pertanto, json_group_array()
in genere verrebbe utilizzato quando si esegue una query su un database.
Esempio di database
Supponiamo di avere la seguente tabella:
SELECT * FROM Pets;
Risultato:
+-------+---------+--------+ | PetId | PetName | TypeId | +-------+---------+--------+ | 1 | Homer | 3 | | 2 | Yelp | 1 | | 3 | Fluff | 2 | | 4 | Brush | 4 | +-------+---------+--------+
Possiamo vedere che ci sono tre colonne e possiamo vedere i loro nomi.
Possiamo usare json_group_array()
così:
SELECT json_group_array(TypeId)
FROM Pets;
Risultato:
[3,1,2,4]
Qui, ho creato un array che consiste in tutto il TypeId
valori.
Possiamo fare un ulteriore passo avanti e passare un'altra funzione JSON come argomento a json_group_array()
.
Ad esempio, se volessimo produrre un oggetto JSON per ogni riga nel database, potremmo usare json_object()
funzione sul tavolo in questo modo:
SELECT json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
FROM Pets;
Risultato:
{"PetId":1,"PetName":"Homer","TypeId":3} {"PetId":2,"PetName":"Yelp","TypeId":1} {"PetId":3,"PetName":"Fluff","TypeId":2} {"PetId":4,"PetName":"Brush","TypeId":4}
Possiamo quindi utilizzare json_group_array()
funzione per fornire un array esterno:
SELECT json_group_array(
json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
)
FROM Pets;
Risultato:
[{"PetId":1,"PetName":"Homer","TypeId":3},{"PetId":2,"PetName":"Yelp","TypeId":1},{"PetId":3,"PetName":"Fluff","TypeId":2},{"PetId":4,"PetName":"Brush","TypeId":4}]
Ora, tutti i documenti JSON prodotti da json_object()
sono racchiusi in un array prodotto da json_group_array()
.