V MySQL je to JSON_TYPE()
funkce vrací typ hodnoty JSON. Přesněji řečeno, vrací utf8mb4
řetězec označující typ hodnoty.
Jako argument zadáte hodnotu JSON.
Syntaxe
Syntaxe vypadá takto:
JSON_TYPE(json_val)
Kde json_val
je hodnota JSON, pro kterou se má vrátit typ. Může to být objekt, pole nebo skalární typ.
Příklad 1 – Objekt
Zde je příklad, kdy je hodnotou objekt.
SET @data = '{"Name": "Homer", "Stupid": true}'; SELECT JSON_TYPE(@data) 'JSON Type';
Výsledek:
+-----------+ | JSON Type | +-----------+ | OBJECT | +-----------+
Příklad 2 – Pole
Zde je příklad pole.
SET @data = '[1, 2, 3]'; SELECT JSON_TYPE(@data) 'JSON Type';
Výsledek:
+-----------+ | JSON Type | +-----------+ | ARRAY | +-----------+
Příklad 3 – Extrahování dat z pole
Můžete také získat typ jednotlivých prvků v poli.
SET @data = '[1, 2, 3]'; SELECT JSON_EXTRACT(@data, '$[1]') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$[1]')) 'JSON Type';
Výsledek:
+------+-----------+ | Data | JSON Type | +------+-----------+ | 2 | INTEGER | +------+-----------+
Příklad 4 – Extrahování dat z objektu
Totéž platí pro členy objektu.
SET @data = '{"Name": "Homer", "Stupid": "True"}'; SELECT JSON_EXTRACT(@data, '$.Stupid') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';
Výsledek:
+--------+-----------+ | Data | JSON Type | +--------+-----------+ | "True" | STRING | +--------+-----------+
V tomto případě byla hodnota řetězcový literál "True"
.
Zde je další příklad, ale tentokrát s použitím booleovské hodnoty true
.
SET @data = '{"Name": "Homer", "Stupid": true}'; SELECT JSON_EXTRACT(@data, '$.Stupid') 'Data', JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';
Výsledek:
+------+-----------+ | Data | JSON Type | +------+-----------+ | true | BOOLEAN | +------+-----------+
Příklad 5 – Databázový dotaz
Tento příklad používá sloupec databáze.
SELECT Contents, JSON_TYPE(Contents) 'Contents', JSON_TYPE(JSON_EXTRACT(Contents, '$.Name')) 'Name' FROM Collections WHERE CollectionId = 4;
Výsledek:
+--------------------------------+----------+--------+ | Contents | Contents | Name | +--------------------------------+----------+--------+ | {"Name": "Homer", "Stupid": 1} | OBJECT | STRING | +--------------------------------+----------+--------+