Il json_type()
di SQLite La funzione restituisce il tipo dell'elemento più esterno del JSON specificato.
Forniamo il JSON come argomento quando chiamiamo la funzione.
Possiamo facoltativamente passare un percorso, che ci consente di ottenere il tipo di un elemento di matrice specifico o di un membro di un oggetto all'interno del JSON.
Sintassi
Possiamo utilizzare la funzione nei seguenti modi:
json_type(X)
json_type(X,P)
Dove X
rappresenta il JSON e P
è un argomento facoltativo che rappresenta il percorso di cui ottenere il tipo.
La funzione restituisce uno dei seguenti valori di testo SQL: null
, true
, false
, integer
, real
, text
, array
o object
.
Esempio
Ecco un esempio per dimostrare come funziona:
SELECT json_type('{ "name" : "Fluffy", "age" : 10 }');
Risultato:
object
Qui ho fornito solo il JSON - non ho fornito un percorso. In questo caso, il JSON più esterno è un oggetto.
Ecco una matrice:
SELECT json_type('[ 1, 2, 3 ]');
Risultato:
array
Possiamo anche fare cose come questa:
SELECT json_type(10.45);
Risultato:
real
In questo caso, il mio argomento non è in realtà un oggetto o un array JSON, ma json_type()
è stato comunque in grado di restituire il suo tipo.
Specifica un percorso
Ecco cosa succede quando specifichiamo un percorso:
SELECT json_type('{ "name" : "Fluffy", "age" : 10 }', '$.age');
Risultato:
integer
In questo caso, ho specificato un percorso di $.age
, che ha determinato il tipo di age
membro che viene restituito.
Prendiamo il tipo del name
membro:
SELECT json_type('{ "name" : "Fluffy", "age" : 10 }', '$.name');
Risultato:
text
Facciamolo su un array:
SELECT json_type('[ "Wag", 2, 1.5, null, true, false ]', '$[0]');
Risultato:
text
Questo ha ottenuto il tipo del primo elemento (gli array SQLite sono a base zero, quindi 0
è per il primo elemento).
Otteniamo i tipi di tutti gli elementi nell'array:
SELECT
json_type('[ "Wag", 2, 1.5, null, true, false ]', '$[0]') AS "0",
json_type('[ "Wag", 2, 1.5, null, true, false ]', '$[1]') AS "1",
json_type('[ "Wag", 2, 1.5, null, true, false ]', '$[2]') AS "2",
json_type('[ "Wag", 2, 1.5, null, true, false ]', '$[3]') AS "3",
json_type('[ "Wag", 2, 1.5, null, true, false ]', '$[4]') AS "4",
json_type('[ "Wag", 2, 1.5, null, true, false ]', '$[5]') AS "5";
Risultato:
+------+---------+------+------+------+-------+ | 0 | 1 | 2 | 3 | 4 | 5 | +------+---------+------+------+------+-------+ | text | integer | real | null | true | false | +------+---------+------+------+------+-------+