SQLite json_type()
funkcja zwraca typ najbardziej zewnętrznego elementu danego JSON.
Podajemy JSON jako argument, gdy wywołujemy funkcję.
Możemy opcjonalnie przekazać ścieżkę, która pozwala nam uzyskać typ określonego elementu tablicy lub składowej obiektu w JSON.
Składnia
Z funkcji możemy korzystać w następujący sposób:
json_type(X)
json_type(X,P)
Gdzie X
reprezentuje JSON, a P
jest opcjonalnym argumentem, który reprezentuje ścieżkę do pobrania typu.
Funkcja zwraca jedną z następujących wartości tekstowych SQL: null
, true
, false
, integer
, real
, text
, array
lub object
.
Przykład
Oto przykład pokazujący, jak to działa:
SELECT json_type('{ "name" : "Fluffy", "age" : 10 }');
Wynik:
object
Tutaj podałem tylko JSON – nie podałem ścieżki. W tym przypadku najbardziej zewnętrzny JSON jest obiektem.
Oto tablica:
SELECT json_type('[ 1, 2, 3 ]');
Wynik:
array
Możemy nawet robić takie rzeczy:
SELECT json_type(10.45);
Wynik:
real
W tym przypadku mój argument nie jest w rzeczywistości obiektem ani tablicą JSON, ale json_type()
i tak był w stanie zwrócić swój typ.
Określ ścieżkę
Oto, co się dzieje, gdy określamy ścieżkę:
SELECT json_type('{ "name" : "Fluffy", "age" : 10 }', '$.age');
Wynik:
integer
W tym przypadku określiłem ścieżkę $.age
, co spowodowało typ age
zwracany członek.
Uzyskajmy typ name
członek:
SELECT json_type('{ "name" : "Fluffy", "age" : 10 }', '$.name');
Wynik:
text
Zróbmy to na tablicy:
SELECT json_type('[ "Wag", 2, 1.5, null, true, false ]', '$[0]');
Wynik:
text
Który otrzymał typ pierwszego elementu (tablice SQLite są liczone od zera, więc 0
dotyczy pierwszego elementu).
Pobierzmy typy wszystkich elementów w tablicy:
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";
Wynik:
+------+---------+------+------+------+-------+ | 0 | 1 | 2 | 3 | 4 | 5 | +------+---------+------+------+------+-------+ | text | integer | real | null | true | false | +------+---------+------+------+------+-------+