W MySQL funkcja JSON_TYPE()
funkcja zwraca typ wartości JSON. Dokładniej, zwraca utf8mb4
ciąg znaków wskazujący typ wartości.
Podajesz wartość JSON jako argument.
Składnia
Składnia wygląda tak:
JSON_TYPE(json_val)
Gdzie json_val
jest wartością JSON, dla której należy zwrócić typ. Może to być obiekt, tablica lub typ skalarny.
Przykład 1 – Obiekt
Oto przykład, kiedy wartość jest obiektem.
SET @data = '{"Name": "Homer", "Stupid": true}'; SELECT JSON_TYPE(@data) 'JSON Type';
Wynik:
+-----------+ | JSON Type | +-----------+ | OBJECT | +-----------+
Przykład 2 – Tablica
Oto przykład tablicy.
SET @data = '[1, 2, 3]'; SELECT JSON_TYPE(@data) 'JSON Type';
Wynik:
+-----------+ | JSON Type | +-----------+ | ARRAY | +-----------+
Przykład 3 – wyodrębnianie danych z tablicy
Możesz także uzyskać typ poszczególnych elementów w tablicy.
SET @data = '[1, 2, 3]'; SELECT JSON_EXTRACT(@data, '$[1]') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$[1]')) 'JSON Type';
Wynik:
+------+-----------+ | Data | JSON Type | +------+-----------+ | 2 | INTEGER | +------+-----------+
Przykład 4 – wyodrębnianie danych z obiektu
To samo dotyczy członków obiektu.
SET @data = '{"Name": "Homer", "Stupid": "True"}'; SELECT JSON_EXTRACT(@data, '$.Stupid') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';
Wynik:
+--------+-----------+ | Data | JSON Type | +--------+-----------+ | "True" | STRING | +--------+-----------+
W takim przypadku wartością był literał ciągu "True"
.
Oto kolejny przykład, ale tym razem przy użyciu wartości logicznej true
.
SET @data = '{"Name": "Homer", "Stupid": true}'; SELECT JSON_EXTRACT(@data, '$.Stupid') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';
Wynik:
+------+-----------+ | Data | JSON Type | +------+-----------+ | true | BOOLEAN | +------+-----------+
Przykład 5 – Zapytanie do bazy danych
W tym przykładzie użyto kolumny bazy danych.
SELECT Contents, JSON_TYPE(Contents) 'Contents', JSON_TYPE(JSON_EXTRACT(Contents, '$.Name')) 'Name' FROM Collections WHERE CollectionId = 4;
Wynik:
+--------------------------------+----------+--------+ | Contents | Contents | Name | +--------------------------------+----------+--------+ | {"Name": "Homer", "Stupid": 1} | OBJECT | STRING | +--------------------------------+----------+--------+