W MariaDB, JSON_TYPE()
to wbudowana funkcja, która zwraca typ wartości JSON w postaci ciągu.
Składnia
Składnia wygląda tak:
JSON_TYPE(json_val)
Gdzie json_val
jest wartością, dla której należy zwrócić typ.
Typy obiektów
Możliwe typy zwrotów są wymienione w poniższej tabeli:
Typ zwrotu | Wartość | Przykład |
---|---|---|
ARRAY | Tablica JSON. | [1, 2, 3] |
OBJECT | Obiekt JSON. | {"a":"1"} |
BOOLEAN | JSON prawdziwy/fałszywy literał. | true lub false |
DOUBLE | Liczba z co najmniej jedną liczbą zmiennoprzecinkową po przecinku. | 1.2 |
INTEGER | Liczba bez liczby zmiennoprzecinkowej po przecinku. | 1 |
NULL | JSON null dosłowny. Jest to zwracane jako ciąg i nie należy mylić z SQL NULL wartość. | null |
STRING | ciąg JSON. | "bird" |
Przykład
Oto przykład do zademonstrowania.
SET @json = '
{
"name" : "Fluffy",
"type" : "Cat"
}
';
SELECT JSON_TYPE(@json);
Wynik:
+------------------+ | JSON_TYPE(@json) | +------------------+ | OBJECT | +------------------+
W tym przykładzie przekazałem cały dokument JSON, który ma typ OBJECT
.
Oto więcej przykładów:
SELECT
JSON_TYPE('[1, 2, 3]'),
JSON_TYPE('{ "a" : 1 }'),
JSON_TYPE('true'),
JSON_TYPE('false'),
JSON_TYPE(10.59),
JSON_TYPE(10),
JSON_TYPE(null),
JSON_TYPE('"Fuzzy Smith"');
Wynik (przy użyciu wyjścia pionowego):
JSON_TYPE('[1, 2, 3]'): ARRAY JSON_TYPE('{ "a" : 1 }'): OBJECT JSON_TYPE('true'): BOOLEAN JSON_TYPE('false'): BOOLEAN JSON_TYPE(10.59): DOUBLE JSON_TYPE(10): INTEGER JSON_TYPE(null): NULL JSON_TYPE('"Fuzzy Smith"'): STRING
Wyodrębnij wartość z dokumentu JSON
W poprzednich przykładach przekazałem każdą wartość bezpośrednio do funkcji jako literał.
Możemy połączyć JSON_TYPE()
z innymi funkcjami, takimi jak JSON_EXTRACT()
aby znaleźć typ wartości w większym dokumencie JSON. Oto przykład wyodrębniania wartości z dokumentu JSON w celu poznania jego typu:
SET @json = '
{
"name" : "Wag",
"scores" : [8, 0, 9]
}
';
SELECT
JSON_TYPE(JSON_EXTRACT(@json, '$.name')) AS Result;
Wynik:
+--------+ | Result | +--------+ | STRING | +--------+
Oto kolejny przykład, który zwraca więcej typów:
SET @json = '
{
"name" : "Wag",
"scores" : [8, 0, 9],
"weight" : 10.50,
"height" : null,
"age" : 4
}
';
SELECT
JSON_TYPE(
JSON_EXTRACT(@json, '$.name')
) AS a,
JSON_TYPE(
JSON_EXTRACT(@json, '$.scores')
) AS b,
JSON_TYPE(
JSON_EXTRACT(@json, '$.scores[0]')
) AS c,
JSON_TYPE(
JSON_EXTRACT(@json, '$.weight')
) AS d,
JSON_TYPE(
JSON_EXTRACT(@json, '$.height')
) AS e,
JSON_TYPE(
JSON_EXTRACT(@json, '$.age')
) AS f;
Wynik:
+--------+-------+---------+--------+------+---------+ | a | b | c | d | e | f | +--------+-------+---------+--------+------+---------+ | STRING | ARRAY | INTEGER | DOUBLE | NULL | INTEGER | +--------+-------+---------+--------+------+---------+
Argument zerowy
Jeśli argumentem jest null
, a następnie null
jest zwracany.
SELECT JSON_TYPE(null);
Wynik:
+-----------------+ | JSON_TYPE(null) | +-----------------+ | NULL | +-----------------+
Nieprawidłowa liczba parametrów
Wywołanie JSON_TYPE()
bez argumentu powoduje błąd:
SELECT JSON_TYPE();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_TYPE'
Tak samo jest, gdy przekazywanych jest zbyt wiele argumentów:
SELECT JSON_TYPE(1, 2);
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_TYPE'